2009-12-06 44 views
7

大家好我想知道什麼是dispatchEventAS3。 我沒有得到任何想法,而谷歌搜索它。 :( 所以,請幫我什麼是Flash AS3中的dispatchEvent?

編輯1:

public static const SET_VOLUME:String = "setVolume"; 

private function onclick(evt:MouseEvent):void { 
      soundClip.scaleX = 0; 
      dispatchEvent(new Event(SET_VOLUME)); 

     } 

這是什麼意思?(

+1

@coderex,請在回答時將您的問題標記爲已回答! – alecmce 2010-02-28 04:06:33

回答

3

基本上它的通知出事了對象的機制。當你分派。事件,需要傾聽的事件

這基本上就像撥打電話(dispatchEvent(new CallEvent(CallEvent.CALL)))。如果你正在嘗試的人ing不在,他們不聽電話事件,所以他們不能做任何事情。如果他們在(addEventListener(CallEvent.Call,answerHandler))中,他們可以回答它,也許直接發送到語音郵件。

要了解完整的概要,請嘗試從Adobe閱讀本文。

http://www.adobe.com/devnet/actionscript/articles/event_handling_as3_02.html

很多編程語言使用的事件所以這是非常值得讓與它交手時。

詹姆斯

響應EDIT1

它看起來像你對我有已成立處理MouseEvent.Click一些物體上的某個地方的方法。當發生這種情況時,它會將另一個對象的scaleX屬性設置爲0(使其不可見)。然後分派新的事件,並將類型設置爲「setVolume」。這是它自己不會做任何事情。在其他地方,這可能是一條線,看起來有點像addEventListener(「setVolume」,doSomethingMethod); 。當原始方法被觸發時(看起來像點擊鼠標),doSomethingMethod應該會觸發。

+0

好的,我有一個疑問,請檢查我的問題編輯1:部分 – coderex 2009-12-06 17:41:01

+0

當onclick()被調用時,將會產生「setVolume」,通知任何訂閱者(通過調用addEventListener訂閱「setVolume」)。 – 2009-12-06 18:13:20

14

一個例子可能有幫助嗎?如果你有Flash IDE中,試試這個在您的時間表:

var ball:Shape = new Shape(); 
ball.graphics.beginFill(0xFF0000); 
ball.graphics.drawCircle(0, 0, 30); 
ball.graphics.endFill(); 
addChild(ball); 

stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveListener); 
addEventListener("myCustomEvent", myCustomEventListener); 

function mouseMoveListener(event:MouseEvent):void 
{ 
    dispatchEvent(new Event("myCustomEvent")); 
} 

function myCustomEventListener(event:Event):void 
{ 
    ball.x = stage.mouseX; 
    ball.y = stage.mouseY; 
} 

這是代碼演示了的addEventListenerdispatchEvent如何對應。 MOUSE_MOVE事件在內部調度,但您可以使用dispatchEvent調度您自己的事件,就像MOUSE_MOVE一樣。

在此代碼會發生什麼事是,MOUSE_MOVE從舞臺上被檢測到,但不是處理,在mouseMoveListener,你發送另一個事件(被稱爲myCustomEvemt),這是在myCustomEventListener處理代替。它的作用就像MOUSE_MOVE事件,只有你派發了事件而不是Flash播放器。

希望這會有所幫助。

4

假設有兩個類:A和B.現在,您希望myFun在類B中發生後,應該發生「functionAfterMyFun」。然後,您將在類B的函數myfun()中使用dispatchEvent。

class A 
{ 

function A() 
{ 
    objectOfB.addEventListener("myFun_Happened", functionAfterMyFun) 
} 

function functionAfterMyFun() 
{ 
    //do something after myFun has happened in class B 
} 

} 

class B 
{ 
function myfun() 
{ 
dispatchEvent(new Event("myFun_Happened")); 
} 


} 
+0

1067:將類型爲String的值的隱式強制轉換爲不相關的類型flash.events:Event。 :(我是否缺少一個導入? – 2013-11-22 22:06:55

+0

啊對不起,有一個錯字,我只是再次編輯它 dispatchEvent(new Event(「myFun_Happened」)); – 2013-11-23 18:55:24

-1

addaddEventListener()就像是讓你的婚前協議。例如,如果你的妻子在外面有另一個男人,你會從你的妻子那裏得到100美元。幸運的是,發生了這種情況。
dispatchEvent()表示您將獲得$ 100。