【问题标题】:Who picks up events dispatched to the event flow in AS3?谁在 AS3 中拾取分派到事件流的事件?
【发布时间】:2013-07-28 23:50:39
【问题描述】:

让我先说我对 AS3、Flash 或类似的东西一无所知,因此我的麻烦是,我确实有一般的编程经验,所以我熟悉基本概念。

我目前正在对 SWF 进行逆向工程,以了解并可能修改其行为。我已经反编译了源代码并对其进行了挖掘,以便找出单击特定按钮时会发生什么。

我已将范围缩小到以下几点:

     var _loc2_:ILandingPageContext = getFirstContext(ILandingPageContext);
     logger.logDebug(_loc2_ + " try to join game");
     var _loc3_:String = JSON.stringify(this._model.getCurrentFeaturedGame());
     _loc2_.getSharedEvents().dispatchEvent(new DataEvent("spectateFeaturedGame",true,false,_loc3_));

通过阅读我收集到的 AS 文档,这会将 DataEvent 分派到事件流 - 我猜现在有一个名为“spectateFeaturedGame”的事件漂浮在周围。

现在我完全迷路了。接下来会发生什么?我想必须有人在某个地方接听这个事件并采取相应的行动,但我不知道在哪里搜索。

任何人都可以指导我正确的方向,以了解发送此事件时究竟发生了什么?

【问题讨论】:

    标签: flash events actionscript


    【解决方案1】:

    如果您正在浏览其他人的代码,您无法真正确定谁将捕获该事件 - 这是一种松散耦合,具有所有优点和缺点。

    最好的办法是在源代码中搜索“spectateFeaturedGame”短语。当有人添加事件侦听器时,它可能会被使用。查看“addEventListener”语法应该会让您了解它是如何工作的。

    【讨论】:

    • 我已经搜索过这个短语,它没有出现在代码中的其他任何地方,所以我猜它必须在另一个文件中......有没有办法找出哪个文件可能是?
    • 这取决于您使用的 IDE。如果在反编译后得到多个 .as 文件,那么任何允许您搜索多个文件的程序都应该没问题 - 例如在 Notepad++ 中,您可以按 CTRL+F 来“在文件中查找”。
    【解决方案2】:

    在 Flash 中调度事件时,可能会发生 2 件事,具体取决于侦听事件的 Object 是否在 DisplayList 上。

    无显示列表: 这是最简单的情况,事件直接分派给监听器(每个对象都有一个内部监听器列表)。

    显示列表: 这些是鼠标单击、键盘事件等事件。事件被分派到舞台,它们在舞台上向下穿过显示列表,直到它们到达您的对象:

    (click event)
    Stage
        - Parent
            - Child (listener)
    

    阶段 Stage->Parent 被称为捕获阶段。然后事件会影响您的孩子。然后它返回显示列表(这次是 Parent->Stage)顺序。这是泡沫阶段。

    AS3 中addEventListener() 的文档在这里:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/events/EventDispatcher.html#addEventListener()

    您可以在此处阅读有关事件流程的更多信息:http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7e4f.html

    对于您的特定情况,如果您想找到监听对象,请按照 quarion 的建议执行并搜索“addEventListener”或更好的是“spectateFeaturedGame”

    【讨论】:

      猜你喜欢
      • 2013-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多