让我先说一下,我完全不知道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”的事件。
现在我完全迷失了。接下来会发生什么?我想必须有人在某个地方接受这个事件并采取相应行动,但我不知道在哪里搜索。
任何人都可以指导我朝正确的方向找出发送此事件时究竟发生了什么吗?
答案 0 :(得分:0)
如果您要导航其他代码,您无法确定谁将捕获该事件 - 这是一个松散的耦合及其所有优点和缺点。
您可能做的最好的事情是在源代码中搜索“spectateFeaturedGame”短语。当有人添加事件监听器时,它可能会被使用。查找“addEventListener”语法应该可以让您了解它是如何工作的。
答案 1 :(得分:0)
在Flash中调度事件时,可能会发生两件事情,具体取决于侦听事件的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”