- TOP
- Web flash / ActionScript
- [AS3] Loaderで読み込んだswf内の変数やメソッドにアクセスする
(Loader.content as Object).変数で外部swfの変数を取得
ActionScript3で外部swfをLoaderクラスを使って読み込んだ時、外部swf内の変数やメソッドを取得したい時用のメモ
読み込み側swf
// Loaderオブジェクト
var ldr:Loader = new Loader();
// 外部swf読み込み
ldr.load(new URLRequest("外部swfパス"));
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void{
// 外部swfのメインタイムライン(DisplayObject型)
ldr.content;
// 変数取得 出力:あいうえお(DisplayObject型であるldr.contentをObject型やMovieClip型にキャストしなければエラー起きる)
trace((ldr.content as MovieClip).hoge);
// タイムラインの制御
(ldr.content as MovieClip).stop();
});
外部swf(読み込まれる側)
// 変数 var hoge:String = "あいうえお";
ldr.contentがDisplayObject型のままだとエラーが起きる
1119:未定義である可能性が高いプロパティ hoge に静的型 flash.display:DisplayObject の参照を使用してアクセスしています。
というエラーがおきます。なのでLoaderオブジェクトのプロパティ ldr.contentはObject型やMovieClip型、Splite型にキャストしなければなりません。as演算子で型変換する事によりエラーを回避する事ができます。
このキャストの方法が合っているのか間違っているのか、私の拙いスキルでは解りませんが、きちんと動いているので良しとしてください。
content プロパティ
content:DisplayObject [読み取り専用]
言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9
load() メソッドまたは loadBytes() メソッドを使用して読み込まれた SWF ファイルまたはイメージ(JPG、PNG、または GIF)ファイルのルート表示オブジェクトが含まれます。
ActionScript 3.0 言語およびコンポーネントリファレンス Loader > contentプロパティ
参考
« PHPでチェックボックスやセレクトボックス値を効率よく受け取る | ホーム | [AS3] ローディング画面用 読み込んだbyte数を表示するActionScript »



















