2013-07-29 22 views
0

让我先说这个,说我完全不了解AS3,Flash或类似的东西,因此我的麻烦,尽管我有一些基本的概念,但我确实有一般的编程经验。谁在AS3中选择派发到事件流的事件?

我目前正在对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

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

您可能要做的最好的事情是搜索“spectateFeaturedGame”短语的源代码。当有人添加事件侦听器时,可能会使用它。查找“addEventListener”语法应该能让你知道它是如何工作的。

+0

我已经搜索了该短语,它并没有出现在代码中的任何其他地方,所以它必须在另一个文件中,我猜...在那里一种方法来找出哪个文件可能是? – DNR

+0

这取决于您正在使用的IDE。如果在反编译之后,你得到了多个。作为文件,那么任何允许您搜索多个文件的程序都应该没问题 - 例如在Notepad ++中,您可以按CTRL + F来“在文件中查找”。 – quarion

0

当在Flash中分派事件时,可能会发生两件事情,具体取决于侦听事件的对象是否在DisplayList上。

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

显示列表中: 这些都像鼠标点击,键盘事件等事件,事件被分派到舞台上,在那里他们旅行下来,通过显示列表,直到他们到达你的对象:

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

阶段 - >父母阶段被称为捕获阶段。事件然后击中你的孩子。然后它返回显示列表(这次是父 - >阶段)顺序。这是泡沫阶段。

在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”