Flash 分派事件:侦听器是否继承调用方';谁的财产?

Flash 分派事件:侦听器是否继承调用方';谁的财产?,flash,actionscript-3,events,Flash,Actionscript 3,Events,我在ActionScript3中注意到,当调用处理程序时,它能够访问senders属性。如果我从自定义类中分派事件。是否所有侦听器都可以继承我的所有公共属性和方法?如果处理程序方法与分派调用定义在同一个类中,则您可以访问这些属性,因为它们在范围中。通常情况并非如此——例如,如果将事件处理程序添加到按钮的“单击”事件中,则您只能通过对该按钮的引用(例如event.target)访问该按钮的属性。如果您更熟悉JS或AS2,那么我理解您为什么会感到困惑——在JS和AS2中,对象的属性很少在方法的范围内

我在ActionScript3中注意到,当调用处理程序时,它能够访问senders属性。如果我从自定义类中分派事件。是否所有侦听器都可以继承我的所有公共属性和方法?

如果处理程序方法与分派调用定义在同一个类中,则您可以访问这些属性,因为它们在范围中。通常情况并非如此——例如,如果将事件处理程序添加到按钮的“单击”事件中,则您只能通过对该按钮的引用(例如event.target)访问该按钮的属性。如果您更熟悉JS或AS2,那么我理解您为什么会感到困惑——在JS和AS2中,对象的属性很少在方法的范围内(例如,您总是需要使用“this”来访问实例属性)

侦听器不继承这些值,它可以使用
event.target
属性获取对调度事件的对象的引用,或者使用
event.currentTarget
属性获取对事件侦听器注册对象的引用。因此,基本上,您可以使用从事件的
target/currentTarget
属性获得的引用来访问发送事件的对象的公共属性

function someFunction():void
{
  //abc is local variable and inaccessible outside someFunction
  var abc:ABC = new ABC();
  abc.prop = "someValue";
  abc.addEventListener(Event.TYPE, handleEvent);
}
function handleEvent(e:Event):void
{
  //get a reference to the object that was declared
  //in someFunction using the event.currentTarget.
  var abc:ABC = ABC(e.currentTarget);
  trace(abc.prop);//traces someValue
}

//some where in the ABC class:
this.dispatchEvent(new Event(Event.TYPE));

如果您想知道,
event.target
event.currentTarget
属性可能不同。将单击事件侦听器添加到精灵中,并单击精灵内部的文本字段(它是精灵的子项),然后检查
target
currentTarget
的值。目标将是文本字段,当前目标将是精灵本身

我没有用正确的词。我知道它们不会继承属性和方法。我的意思是调度发送了一个可以使用的引用。
function someFunction():void
{
  //abc is local variable and inaccessible outside someFunction
  var abc:ABC = new ABC();
  abc.prop = "someValue";
  abc.addEventListener(Event.TYPE, handleEvent);
}
function handleEvent(e:Event):void
{
  //get a reference to the object that was declared
  //in someFunction using the event.currentTarget.
  var abc:ABC = ABC(e.currentTarget);
  trace(abc.prop);//traces someValue
}

//some where in the ABC class:
this.dispatchEvent(new Event(Event.TYPE));