我刚刚开始学习AS3,遇到了我遇到的问题。我创建了一个名为MovieClip
的{{1}},并在舞台上添加了三个实例:Button
,button1
和button2
。我想要实现的是,当我将鼠标光标悬停在这些按钮之一上时,我希望所有其他按钮都可以执行某项操作。在我的示例中:将button3
设置更改为0.2。我已经能够使用很多行代码来做到这一点,但是我想使用alpha
和array
语句将代码减少到最少。
for each
import flash.events.MouseEvent;
stop();
var arrayButtons:Array = [button1, button2, button3];
for each (var btn in arrayButtons) {
btn.addEventListener(MouseEvent.MOUSE_OVER, onBtn);
arrayButtons.splice[this, 1];
}
function onBtn(e:MouseEvent): void {
for (var i:Number = 0; i < arrayButtons.length; i++) {
arrayButtons[i].alpha = 0.2;
}
}
不起作用,但是我不知道应该将其更改为什么。有什么想法吗?
答案 0 :(得分:0)
拼接数组需要两个整数,this
不会是整数。
即使this
是您正在考虑的整数,它也会循环遍历并删除每个循环上的按钮,从而为您留下一个空数组。我可以看到您要执行的操作-为每个处理程序分配一个没有相关按钮的数组。
使用代码的一种简单方法是在onBtn处理程序的for循环中运行检查,以查看当前数组元素是否与滚动按钮(例如currentTarget)匹配。如果不是,请设置Alpha。
您不需要拼接数组。
import flash.events.MouseEvent;
stop();
var arrayButtons:Array = [button1, button2, button3];
for each (var btn in arrayButtons) {
btn.addEventListener(MouseEvent.MOUSE_OVER, onBtn);
// remove the splice
// arrayButtons.splice[this, 1];
}
function onBtn(e:MouseEvent): void {
for (var i:Number = 0; i < arrayButtons.length; i++) {
// if the current array element is not the current button, set alpha
if(arrayButtons[i].name != e.currentTarget.name ){
arrayButtons[i].alpha = 0.2;
}
}
}
(mods:我无法弄清楚as3代码突出显示-您曾经能够突出显示as3语法,但是自从我尝试过以来已经有一段时间了?)