0

ゲーム内から一時停止できないフラッシュ ゲームがいくつかあります。それらを一時停止できるラッパーswfを書きたいと思います。ゲームを再コンパイルすることは現実的ではないため、ゲームに機能を追加することはできません。

おそらく必要なことは、ロードされた swf が ENTER_FRAME イベントを取得し、flash.utils.getTimer への呼び出しをラッパーで定義された関数にリダイレクトするタイミングを制御することです。これは、ロードされた ApplicationDomain オブジェクトの domainMemory ByteArray を変更することで実行できますか?

4

1 に答える 1

0

domainMemory高速メモリにアクセスするための API にすぎません。

あなたがしようとすることができるのは、ゲーム SWF を逆コンパイルし、メインの EnterFrame イベントのディスパッチャを見つけることです (そして、ゲーム SWF をロードした後、たとえば、ステージまたはroot) をゲーム ティック ディスパッチャーとして使用すると、このディスパッチャーのデフォルトの 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();
}   
于 2013-01-25T14:09:42.920 に答える