IEventDispatcher背后的逻辑是什么?
这是我见过的代码:
var elements : Array = new Array();
var elements2 : Array = new Array();
for (var i:int = 1; i <= 5; i++) {
elements[i] = this['obj' + i];
elements2[i] = this['tracking' + i];
}
for each(var element_1 : IEventDispatcher in elements){
element_1.addEventListener(MouseEvent.MOUSE_OVER, moveUp);
}
for each(var element_2 : IEventDispatcher in elements2){
element_2.addEventListener(MouseEvent.MOUSE_OUT, moveDown);
}
function moveUp(e:MouseEvent):void{
e.currentTarget.y -= 30;
}
function moveDown(e:MouseEvent):void{
elements[elements2.indexOf(e.currentTarget)].y += 30;
}
答案 0 :(得分:1)
我不确定你在问什么..使用IEventDispatcher
背后的逻辑是它输入的for each()
循环和IEventDispatcher
是应用于循环的类型。这基本上意味着Array
或Vector
中的所有内容都是IEventDispatcher
或继承自IEventDispatcher
。
以下是使用for each
类型的MovieClip
示例:
var mcs:Array = [new MovieClip(), new MovieClip()];
var i:MovieClip;
for each(i in mcs)
{
trace(i);
}
在操作for each
或Array
中的元素时,Vector
比循环标准要快得多,因为它不需要花费太多时间来计算对象的实际内容是
唯一需要知道的是,如果循环的数组中的任何内容都不是TypeError
,则会抛出MovieClip
。