2

SWF を Flex と通信させる方法 ( TheFlashCanon の優れたチュートリアル) に従っているときに、SWFLoader.content を MovieClip インスタンスに変換する際に問題が発生しました。問題のロードされた SWF は、Flash CS3 (actionscript 3 を使用) を使用してコンパイルされます。

ただし、SWFLoader のコンテンツを取得して MovieClip インスタンスに変換しようとすると、常に次のエラーが発生します。

TypeError: エラー #1034: 型強制に失敗しました: maix::main_maix@49f94ec1 を flash.display.MovieClip に変換できません。test1/onLoadMinigameComplete()[/Users/chiyin/Documents/Flex Builder 3/SimpleGirlfriend/src/Main.as:68] で

ここで、maix::main_maix@49f94ec1 は私の映画のインスタンスです。

私は何を間違っていますか?ロードされた swf は、それ以外の場合は正常に再生され、AVM1Movie として示されません。

更新: SWF がムービークリップではなくスプライトとしてインポートされることがわかりました。SWFLoader が SWF を Sprite オブジェクトではなく Movieclip としてロードするように強制するにはどうすればよいですか?

4

2 に答える 2

0

main_maixロードされているswfのドキュメントクラスのように見えます。その場合、次MovieClipの代わりにmain_maixを拡張する必要がありSpriteます。

public class main_maix extends MovieClip 

また、いつでもクラスをオブジェクトにキャストして、自由にアクセスできるようにすることができます(ただし、あまり良い方法ではありません)。「main_maixとしてキャスト」することもできます。

/**
 * Loader finished loading
 * 
 * @param Event Complete event
 * @return void
 */
private function onLoadMinigameComplete(event:Event):void 
{
    // -- either will allow "free access" to methods of main_maix
    var maixAsObject:Object = Object(loader.content);
    var maixAsMaix:main_maix = main_maix(loader.content);
}
于 2009-05-25T17:59:33.853 に答える
0

これが動的にロードされたswfsでも同じかどうかはわかりません。ただし、Flash オーサリング環境でムービークリップを作成していて、フレームが 1 つしかない場合。次に、それを Flex アプリケーションに埋め込みます。ムービークリップではなくスプライトとして埋め込まれます。

于 2009-06-01T19:52:26.103 に答える