大家好我想知道 AS3 中的 dispatchEvent 是什么。 谷歌搜索时我没有任何想法。 :( 所以请帮帮我
修改1:
public static const SET_VOLUME:String = "setVolume";
private function onclick(evt:MouseEvent):void {
soundClip.scaleX = 0;
dispatchEvent(new Event(SET_VOLUME));
}
这意味着什么? (
答案 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美元。