Flexは、スプライトとしてSWFをロードします。どのように私の代わりにムービークリップとしてそれをロードしていますか?
-
05-09-2019 - |
質問
しかし、私はにSWFLoaderのコンテンツを取得し、MovieClipインスタンスに変換しようとすると、私はいつもこのエラーを取得します:
はTypeError:エラー#1034:型強制 失敗しました:変換できません。 maix :: main_maix @ 49f94ec1へ flash.display.MovieClipと。に TEST1 / onLoadMinigameComplete()[/ユーザ/ chiyin /ドキュメント/フレックス ビルダー 3 / SimpleGirlfriend / SRC / Main.as:68]
maixは:: 49f94ec1 @ main_maixは私の映画のインスタンスです。
私が間違って何をしているのですか?ロードされたSWFは、そうでない場合は罰金果たし、そしてたAVM1Movieと表記されていません。
更新:SWFは、スプライトの代わりに、ムービークリップとしてインポートされていることが分かりました。私の代わりにSpriteオブジェクトのムービークリップとしてSWFをロードするためにSWFLoaderを強制する方法は?
解決
main_maix
がにロードされたSWFのドキュメントクラスになりそうだもしそうなら、main_maixではなくMovieClip
の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);
}
他のヒント
これは、動的にロードされたSWFに同じである場合、私は知りません。しかし、あなたには、Flashオーサリング環境でムービークリップを作っている、それは単一のフレームのみを持っている場合。その後、Flexアプリケーションにそれを埋め込みます。これは、代わりにムービークリップのスプライトとして埋め込みます。