我在影片剪辑中有很多按钮。而不是为每个人创建监听器我只想根据他们在mc中点击的目标执行操作。我想根据他们点击的按钮更改alpha。怎么办呢?
我在下面尝试了4个选项,但这些选项都不起作用。
manyButtons.addEventListener(MouseEvent.MOUSE_UP, mUp);
function mDown(e:Event)
{
trace(e.target.name); // Works! Outputs name of button I click
this[e.target.name].alpha = .5; // Does not work
e.target.name.alpha = .5; // Error: can not create property alpha on sting
e.target.alpha = .5; // changes ALL children buttons and parent mc.
}
答案 0 :(得分:1)
e.target.name会返回您按钮的名称,正如您已经观察到的那样。但是你的按钮不是“这个”。它在this.manyButtons中。你必须提供完整的路径。所以解决方案是:
this.manyButtons[e.target.name].alpha = .5;
...假设按钮是manyButtons显示对象的子节点。
顺便说一句,更好的方法就是:MovieClip(e.target).alpha = .5
编辑:如果你来自AS2 - >记住范围不再在监听器中改变。如果您之前写过类似的内容,请忘掉它:
this.manyButtons.onRelease = function() {
trace(this); //this changed the scope to the manyButtons object!
}
this
在as3中不再改变。它总是引用它声明的对象!