as3使用实例字符串名称更改mc上的属性

时间:2014-02-03 07:33:57

标签: actionscript-3 target

我在影片剪辑中有很多按钮。而不是为每个人创建监听器我只想根据他们在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.
        }

1 个答案:

答案 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中不再改变。它总是引用它声明的对象!