0

多くの関数を含む「シェル」プログラムであるswfファイルがあります。このシェルプログラムは子ムービーをロードします。子映画のルートタイムラインには、次のコードがあります。

function putresponse(q,r) {
    trace (r);
    _root.debug(r);
}
_root.debug("foo");

デバッグは、画面にテキストを書き込む関数です。これをローカルで実行すると、putresponse関数が呼び出され、トレースが発生します。リモートで(シェル内で)実行すると、最初のデバッグはロード時にすぐに実行されますが(予想どおり)、後でputresponseが呼び出されたときに、debug(r)は実行されません。外部クリップはシェルと同じURLにあるので、セキュリティの問題ではないと思います。また、私が言ったように、debug( "foo")は正常に機能します。これは本当に私を困惑させます。第1レベルのタイムラインではなく、関数から呼び出されたときに_rootからデバッグを呼び出せない理由を誰かが明らかにすることはできますか?

編集:putresponseの呼び出しは、ローカル(子MC内)MCの2つのレイヤーから発生します。実際の呼び出しは次のとおりです。

_parent._parent.putrepsonse(q,r);
4

1 に答える 1

1

Loaderこれは、クラスを使用して外部からロードされたSWFですか?試してみたいかもしれません:

req = new URLRequest("test.swf"); // test.swf has function foo()
ldr = new Loader();
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, sayFoo);
ldr.load(req);
someclip.addChild(ldr);
function sayFoo(event:Event):void {
   externalSwf = event.target.content;
   externalSwf.foo();
}

チェック:http ://www.kirupa.com/forum/showthread.php?290484-How-to-execute-a-function-in-an-externally-loaded-swf

于 2012-06-28T03:18:28.417 に答える