高手讲解下AS3事件中target 及下面代码中e.target 的意思. 谢谢!

2025-02-01 15:43:56
推荐回答(3个)
回答1:

e.target就是事件的目标,也就是注册这个事件的对象。 newCircle.addEventListener注册侦听事件,所以事件的目标就是newCircle
var circleMC:MovieClip = MovieClip(e.target)还可以写成var circleMC:MovieClip = e.target as MovieClip
实际上就是声明一个名称为circleMC的MovieClip对象,让它等于一个也是MovieClip类型的对象
MovieClip(e.target)相当于把e.target转化为MovieClip对象,跟把字符串“1”通过int("1")转化为数字类型一样

回答2:

event.target是事件冒泡过程中传给侦听者的对象。不一定是target发送的,也可能是target的子元件。
由currentTarget作为dispatcher向上发送事件,一层一层发送,直到事件被截获,截获事件的元件的上一层,即最近的传给截获者的元件就是target.
但是ENTER_FRAME事件是不基于冒泡机制的,可以理解成系统会在每帧去遍历所有Sprite并发送事件。
这里遍历到newCircle并发现它注册了一个EF事件,这里的event.target就是它了。

回答3:

这里的 e.target 等同 newCircle 区别就是 比如你写成对象A.addEventListener(Event.ENTER_FRAME, ZoomCircle);对象B.addEventListener(Event.ENTER_FRAME, ZoomCircle); 即是说更改时,下面代码中的不用修改,如果你下面也是写成硬编码的话 那更改就大了 这也是事件机制提供给我们的便利,可以通过事件回调函数(事件处理函数的参数就是一个事件对象)访问到事件的发生对象