什么是Flash AS3中的dispatchEvent?

时间:2009-12-06 17:12:03

标签: flash actionscript-3 actionscript actionscript-2

大家好我想知道 AS3 中的 dispatchEvent 是什么。 谷歌搜索时我没有任何想法。 :( 所以请帮帮我

修改1:

public static  const SET_VOLUME:String = "setVolume";

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

        }
这意味着什么? (

4 个答案:

答案 0 :(得分: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;
}

这段代码演示了 addEventListener dispatchEvent 是如何对应的。 MOUSE_MOVE 事件在内部调度,但您可以使用 dispatchEvent 调度自己的事件,就像 MOUSE_MOVE 一样。

此代码中发生的情况是检测到来自舞台的 MOUSE_MOVE ,但不是在 mouseMoveListener 中处理它,而是调度另一个事件(称为 myCustomEvemt )在 myCustomEventListener 中处理。它就像 MOUSE_MOVE 事件一样,只调度了事件而不是flash播放器。

希望这有帮助。

答案 1 :(得分:4)

假设有两个类:A和B.现在你希望在类B中出现myFun之后发生“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"));
}


}

答案 2 :(得分:3)

基本上,它是一种通知对象发生了某些事情的机制。当您发送事件时,需要监听该事件。

它基本上就像打电话一样(dispatchEvent(new CallEvent(CallEvent.CALL)))。如果您试图响铃的人不在,他们没有听电话事件,所以他们无法做任何事情。如果他们在(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应该触发。

答案 3 :(得分:-1)

addaddEventListener()想要达成婚前协议 例如,如果你的妻子在外面有另一个男人,你将从你的妻子那里得到100美元。幸运的是,这种情况发生了。
dispatchEvent()意味着您将获得100美元。