如何将多个事件排列到actionscript 3中的单个eventHandler?
问题描述:
我正在构建一个加载minigames(swf)的框架,并且遇到了一个问题。如何将多个事件排列到actionscript 3中的单个eventHandler?
我目前有一个侦听器,用于监听孩子minigame发送给父框架的事件。但是,如果孩子发送的两个消息(事件)彼此靠得太近,那么看起来第一个事件会被忽略,这会导致一些消息根本无法到达父框架。
我读过,你可以以某种方式排队动作事件,以便事件在FIFO基础上处理。我怎样才能做到这一点?对于这个问题,文档似乎很少,所以我很难过。
非常感谢!
答
你真的应该用这样的问题发布代码;其他人都是对的 - 听起来就像你在某个地方犯了错误,而当他们伴随着一些代码时,帮助解决这些问题要容易得多。
这就是说,即使你派出的事件在一个紧密的循环,就像这样:
addEventListener("foo", handleFoo, false, 0);
for (var i:int = 0; i < 100; i++)
{
dispatchEvent(new FlexEvent("foo"));
}
private function handleFoo(event:Event):void
{
trace("hello");
}
...你会看到许多“打着招呼”作为循环迭代;它并没有比这更“接近”。您可以优先处理事件处理 - 例如,使用addEventListener函数的priority参数(例如,此侦听器首先被调用(因此为上面的“0”),此另一个侦听器被调用第二个(“1”)等等) (再次,见上),但就是这样。除非您自己编写队列,否则没有内置的事件分派队列。
嗯...这真是奇怪...... AVM2是单线程... 如果你分派事件,则继续执行之前的所有处理函数被调用...... 你能不能缩小下来,并发表最小的设置来重现问题? greetz back2dos – back2dos 2009-06-03 16:53:04