什么是Flash AS3中的dispatchEvent?

问题描述:

大家好我想知道什么是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

基本上它的通知出事了对象的机制。当你分派。事件,需要倾听的事件

这基本上就像拨打电话(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

一个例子可能有帮助吗?如果你有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播放器。

希望这会有所帮助。

假设有两个类: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

addaddEventListener()就像是让你的婚前协议。例如,如果你的妻子在外面有另一个男人,你会从你的妻子那里得到100美元。幸运的是,发生了这种情况。
dispatchEvent()表示您将获得$ 100。