代码之家  ›  专栏  ›  技术社区  ›  futureelite7 Adam Rosenfield

如何将多个事件排队到ActionScript3中的单个事件处理程序?

  •  0
  • futureelite7 Adam Rosenfield  · 技术社区  · 15 年前

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

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

    我读到您可以以某种方式将actionscript事件排队,以便在FIFO基础上处理事件。我该怎么做?对于这个问题,文档似乎非常稀缺,所以我很困惑。

    多谢!

    1 回复  |  直到 15 年前
        1
  •  2
  •   Christian Nunciato    15 年前

    你真的应该用这样的问题来发布代码;其他的问题是对的——听起来你确实在某个地方犯了错误,当这些问题伴随着一些代码时,帮助解决它们就容易多了。

    也就是说,即使您在一个紧密的循环中调度您的事件,比如:

    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");
    }
    

    …你会看到和循环迭代一样多的“hello”;它不会变得比这更“紧密”。你可以优先处理事件 处理 --例如,这个监听器首先被调用(因此上面的“0”),另一个监听器被调用第二个(“1”),依此类推——使用addEventListener函数的priority参数(同样,请参见上面),但就是这样。除非您自己编写队列,否则不存在事件调度的内置队列。

    推荐文章