2

AS2 で記述された SWF を AS3 SWF にロードしようとしています - Loader クラスを使用し、Event.COMPLETE をリッスンします。私の onCompleteHandler 関数で、これをステージに追加したいので、試してみます-

addChild(evt.currentTarget.content) 

...しかし、次のエラーメッセージが表示されます。

Error #2180: It is illegal to move AVM1 content (AS1 or AS2) to a different part of the displayList when it has been loaded into AVM2 (AS3) content.

AS2 swwf には多くのコードが含まれており、AS3 への移行を避けることができれば、そうしたくないと思っています。これが可能かどうか、またはロードされたswfをステージに追加する別の方法を知っている人は誰でも。ロードされたswfで関数を呼び出すにはどうすればよいですか?

ここにコードスニペットがあります -

var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
var request:URLRequest = new URLRequest("testLoadSwf.swf");
loader.load(request);

function onCompleteHandler(evt:Event) {
   addChild(evt.currentTarget.content);
}

皆さんありがとう。

4

2 に答える 2

2

これを行う唯一の効果的な方法は、LocalConnection を使用することです。AS2 と AS3 は互いにあまり通信できません。AS2 ファイルのソースにまだアクセスできる場合は、LocalConnection でいくつかの関数を公開できます。また、Grant Skinner による SWFBridge と呼ばれる適切なヘルパー クラスもあります。このヘルパー クラスは、これを行う際の基礎の一部を取り除きます。ここから入手できます

于 2009-05-18T14:22:52.250 に答える
0

var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler); var request:URLRequest = new URLRequest("testLoadSwf.swf"); loader.load(リクエスト);

function onCompleteHandler(evt:Event) { //addChild(evt.currentTarget.content); addChild(ローダー)

于 2009-07-28T13:10:04.057 に答える