0

さて、私は別のフラッシュプログラム(この例では「pacman_main.swf」と呼ばれます)をロードしているフラッシュCS3(+ AS3)プログラムを持っています。Flash 5とAS1(yippee!)で作成されているため、これはかなり古いSWFであると判断しました。

親SWF(別名ラッパー)が子SWFG(別名「pacman_main.swf」)の変数、具体的にはスコアにアクセスできるようにしたい。これは、スコアをサードパーティのPHP / mySQL dbblahblahに送信できるようにするためです。

function checkScore() {
    // Get the score and submit it
}

submitScore.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
function mouseDownHandler(event:MouseEvent):void {
    checkScore();
}

var loader:Loader = new Loader();
loader.load(new URLRequest("pacman_main.swf")); 
addChildAt(loader, 0); 

ラッパーを作成した後、[デバッグ]> [変数の一覧表示]を使用して、スコアの変数名を知っています。スコアは、ゲームで18 pac-dotを取得した後、「Variable _level0.instance5.instance6.score=180」としてリストされる変数です。「checkScore」関数でこれにアクセスするにはどうすればよいですか?

ありがとう!

4

1 に答える 1

1

最新のフラッシュプレーヤーには、as3用のAVM2とas2/as1用のAVM1の2つの仮想マシンがパッケージ化されています。このため、as1 / as2 swfをフラッシュにロードすると、タイプはAVM1Movieになり、AVM1によって実行されます。残念ながら、AVM2はAVM1で実行されているオブジェクトにほとんどアクセスできません。実際、「AVM1MovieオブジェクトとAVM2オブジェクト間の相互運用性(メソッドの呼び出しやパラメーターの使用など)は許可されていません」。

as1ソースコードにアクセスできますか?スコアが変更されるたびにイベントを発生させることをお勧めします。ラッパークラスでこれらのイベントをリッスンでき、スコア変数に直接アクセスすることを心配する必要はありません。

AVM1Movieの詳細については、こちらをご覧ください。

于 2009-07-28T15:37:47.040 に答える