我有几个不能在游戏中暂停的Flash游戏。我想写一个包装swf,允许我暂停它们。重新编译游戏是不可行的,因此不能添加任何功能。
我可能需要做的是控制何时加载的swf获取ENTER_FRAME事件并将对flash.utils.getTimer的调用重定向到包装器中定义的函数。可以通过修改加载的ApplicationDomain对象的domainMemory ByteArray来完成吗?
答案 0 :(得分:0)
domainMemory
绝对无法帮助您,it's just API可以访问快速内存。
你可以尝试做的是反编译游戏swf并找到主要的EnterFrame事件的调度员(并且在加载游戏swf之后你必须通过显示列表找到这个调度员,例如,如果它没有结果用作游戏刻度调度程序的阶段或根目录,而不是您可以拦截此调度程序的默认EnterFrame事件。对于拦截,只需添加具有更高优先级的自己的侦听器:
//pause the game
dispatcher.addEventListener(Event.ENTER_FRAME, onGameEnterFrame, false, 1);
//resume the game
dispatcher.removeEventListener(Event.ENTER_FRAME, onGameEnterFrame);
protected function onGameEnterFrame(event:Event):void
{
event.stopImmediatePropagation();
}