2012-05-03 258 views
0

说我有一个对象ActionScript中,对象和事件侦听器

var my_obj = new Object(); 
my_obj['key'] = value; 

有没有办法将事件监听器添加到超值,喜欢

my_obj['key'].addEventListener(Blah Blah); 

我还有很长的(ISH)名单时间轴上按钮的布局(布局对于时间轴而言更加有意义,而不是通过动作来构建布局)。

button1 = plays "frame label 1" 
button2 = plays "frame label 2" 

等....所以我只是想在一个数组

obj["button1"] = "framelabel1" 
arr.push(obj); 

然后存储一切我可以对所有的按钮和使用对象的一个​​事件处理程序来获取帧标签值...

+0

您能否让我们停止猜测究竟是什么问题? :) –

回答

1

是的,你可以做的正是你要问在你提到的具体的方式是什么,这里有一个例子:

var value:Sprite = new Sprite(); 

var my_obj = new Object(); 
my_obj['key'] = value; 

所以美其名曰:

my_obj['key'].addEventListener(Event.ENTER_FRAME, _onEnterFrameHandler); 

是完全与通话相同:

value.addEventListener(Event.ENTER_FRAME, _onEnterFrameHandler); 
1

这个问题对我来说很模糊。我的猜测是,每次设置值时都需要触发某些东西。如果是这种情况,那么你必须创建一个自定义类,并在那里声明一个getter-setter属性。

例如:

package 
{ 
    import flash.display.Sprite; 

    public class TestAccessor extends Sprite 
    { 
     private var someVarValue:uint = 0; 

     public function TestAccessor() 
     { 
      super(); 
     } 

     public function get someVar():uint 
     { 
      return someVarValue; 
     } 

     public function set someVar(value:uint):* 
     { 
      someVarValue = value; 
      // this is the place where someVar is set. 
      // do whatever else you like here, 
      // you may choose to dispatch an event from here if you need. 
     } 

    } 
} 

回到AS1,AS2时代,我们必须为这一目的watch()addProperty(),但这些时间是早已消失。为了好。 :)