Flash 如何将多个事件排队到actionscript 3中的单个eventHandler?

Flash 如何将多个事件排队到actionscript 3中的单个eventHandler?,flash,actionscript-3,events,event-handling,event-queue,Flash,Actionscript 3,Events,Event Handling,Event Queue,我正在构建一个加载小游戏的框架(在swf中),遇到了一个问题 我目前有一个侦听器,用于侦听子迷你游戏发送到父框架的事件。但是,如果子级发送的两条消息(事件)彼此太近,则第一个事件似乎被忽略,这会导致一些消息根本无法到达父框架 我了解到,您可以以某种方式对actionscript事件进行排队,以便在FIFO的基础上处理事件。我该怎么做?对于这个问题,文档似乎非常稀少,所以我很困惑 非常感谢 你真的应该用这样的问题发布代码;其他人是对的——这听起来确实像是你在某个地方犯了一个错误,当这些问题伴随着一

我正在构建一个加载小游戏的框架(在swf中),遇到了一个问题

我目前有一个侦听器,用于侦听子迷你游戏发送到父框架的事件。但是,如果子级发送的两条消息(事件)彼此太近,则第一个事件似乎被忽略,这会导致一些消息根本无法到达父框架

我了解到,您可以以某种方式对actionscript事件进行排队,以便在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(“foo”,handleFoo,false,0);
对于(变量i:int=0;i<100;i++)
{
dispatchEvent(新FlexEvent(“foo”));
}
私有函数handleFoo(事件:事件):无效
{
trace(“你好”);
}

。。。你会看到和循环的迭代次数一样多的“你好”;没有比这更“亲密”的了。您可以使用addEventListener函数的priority参数(同样,请参见上文)对事件处理进行优先级排序——例如,首先调用此侦听器(因此上面的“0”),然后调用另一个侦听器(“1”),等等,但仅此而已。没有内置的事件调度队列,除非您自己编写队列。

hmmm。。。这真的很奇怪。。。AVM2是单线程。。。如果分派事件,则在继续执行之前调用所有处理程序函数。。。你能缩小范围并发布一个最小的设置来重现这个问题吗?格里茨·博斯亚,听起来这里肯定还有别的事情。也许发布事件调度代码,并稍微解释一下结构。它们是从同一个地方以同样的方式发送的吗?在进一步的调查中,似乎我发送了一个事件,在孩子swf有机会发送另一条消息之前杀死了孩子swf(因为AVM2是单线程的)。所以问题解决了!谢谢你的帮助。