2011-05-20 12 views
0

IEventDispatcher背後的邏輯是什麼?關於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

@布賴恩威利斯謝謝。 – Marty 2011-05-20 05:27:18

回答

1

我不知道你在問什麼..後面使用IEventDispatcher邏輯有一個for each()環路它輸入和IEventDispatcher是類型應用於循環。這基本上意味着ArrayVector中的所有內容都是IEventDispatcher或從IEventDispatcher繼承。

下面是一個使用MovieClip類型for each例如:操縱在ArrayVector元素時

var mcs:Array = [new MovieClip(), new MovieClip()]; 

var i:MovieClip; 
for each(i in mcs) 
{ 
    trace(i); 
} 

一個for each比for循環標準快得多,因爲它並沒有花太多的時間工作了解對象實際是什麼。

您需要知道的唯一的其他事情是,如果陣列中的任何內容通過的不是MovieClip,則會拋出TypeError

+0

什麼時候適合我使用IEventDispatcher! 我用Google搜索了!但我無法找到明確的答案! – christian 2011-05-20 06:34:07

+0

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/events/IEventDispatcher.html – Marty 2011-05-20 06:37:49