【发布时间】:2016-09-15 19:25:52
【问题描述】:
所以我想通过制作我拥有的所有按钮的数组来更快地编码,并制作一个函数数组,其中索引号连接到每个按钮的数组。
例如,buttons[0],hover 的处理程序事件是 button_over_funcs[0],而 out 的处理程序事件是 button_out_funcs[0]。
为了更清楚(因为英语不是我的第一语言),看看我的代码:
var buttons:Array = [playbtn, tutorialbtn];
var button_over_funcs:Array = new Array();
var button_out_funcs:Array = new Array();
var i = 0;
for each(var j in buttons){
j.buttonMode = true;
button_over_funcs.push(function(e:MouseEvent){
j.gotoAndPlay("hover");
});
button_out_funcs.push(function(e:MouseEvent){
j.gotoAndPlay("out");
});
j.addEventListener(MouseEvent.ROLL_OVER, button_over_funcs[i]);
j.addEventListener(MouseEvent.ROLL_OUT, button_out_funcs[i]);
i++;
}
但 j 将始终指代 tutorialbtn,无论我悬停/退出哪个按钮。我也试过for-in
var buttons:Array = [playbtn, tutorialbtn];
var button_over_funcs:Array = new Array();
var button_out_funcs:Array = new Array();
for(var j in buttons){
buttons[j].buttonMode = true;
button_over_funcs.push(function(e:MouseEvent){
buttons[j].gotoAndPlay("hover");
});
button_out_funcs.push(function(e:MouseEvent){
buttons[j].gotoAndPlay("out");
});
buttons[j].addEventListener(MouseEvent.ROLL_OVER, button_over_funcs[j]);
buttons[j].addEventListener(MouseEvent.ROLL_OUT, button_out_funcs[j]);
}
两者看起来都一样。似乎动作脚本总是引用 j 的最后一个值而不是分配它。你对如何按照我的预期做这个有什么想法吗?是否不可能更快地完成此操作并且不指定按钮来执行相同的操作?
【问题讨论】:
标签: arrays actionscript-3 loops flash events