2009-05-25 1 views
2

SWFとFlexとの通信時に、(TheFlashCanon's excellent tutorial)の次にSWFLoader.contentをMovieClipインスタンスに変換する際に問題があります。問題のSWFは、Flash CS3(actionscript 3を使用)を使用してコンパイルされます。FlexはSWFをSpriteとして読み込みます。代わりにMoviClipとしてロードするにはどうしたらいいですか?

TypeError: Error #1034: Type Coercion failed: cannot convert maix::[email protected] to flash.display.MovieClip. at test1/onLoadMinigameComplete()[/Users/chiyin/Documents/Flex Builder 3/SimpleGirlfriend/src/Main.as:68]

maix :: main_maix 49f94ec1 @は私の映画のインスタンスである:私はにSWFLoaderのコンテンツを取得し、MovieClipインスタンスに変換しようとすると、

しかし、私はいつもこのエラーが出ます。

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

更新:SWFがムービークリップの代わりにスプライトとして読み込まれていることがわかりました。 SWFLoaderにSpriteオブジェクトの代わりにMoviClipとしてSWFをロードさせるにはどうすればよいですか?

答えて

0

main_maixがにロードされたSWFのドキュメントクラスになりそうだもしそうなら、main_maixではなくSpriteMovieClipを拡張する必要があります。

public class main_maix extends MovieClip 

、あなたは常にクラスにアクセスできるようにするオブジェクトをキャストすることができますそれは自由です(しかし、非常に良い習慣ではありません)。あなただけの「main_maixとして、それをキャスト」することもできます。これは、動的にロードされたSWFに同じであれば

/** 
* 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); 
} 
0

私は知りません。しかし、Flashオーサリング環境でムービークリップを作成している場合は、1つのフレームしかありません。それをFlexアプリケーションに埋め込みます。ムービークリップの代わりにスプライトとして埋め込みます。

関連する問題