- 2010-02-10 (水) 13:27
- action script
flvビデオをタイムラインに貼付けてちょっとフレームアクション追加してswf化、それを子swfとして、親swfからロードして使うというケースがあるとします。
その中で再生中のムービーのあるタイミングで親swfのメソッドを実行したいことがあります。
つまり表題のように子swfから親swfの変数・メソッドを呼び出すというケース。
僕のケースでは親swfのドキュメントクラス(Main.as)内で定義したメソッドを呼び出したかったので、子flaのフレームアクション上から、Main(root.parent.parent).hoge()みたいにキャストして呼び出そうとしたら、子swfの単品flaパブリッシュ時に「未定義である可能性が高いメソッド Main の呼び出しです。」と当然怒られる。(失敗1)
で、キャストするのをやめて root.parent.parent.hoge() だと、
「未定義である可能性のあるメソッド hoge を、静的型・・・」と怒られる。(失敗2)
ネットで調べて下記記事を拝見:
外部swfから親を呼ぶ | Miscellaneous notes
var ld:Loader = loaderInfo.loader; var maintl:MovieClip = ld.root as MovieClip; maintl.hoge(); // 親の関数
と子flaのフレーム上に書いてパブリッシュ成功。親swfへのアクセスも成功。(成功1)
あれ?Main型でキャストしなくてもhoge()たたけるの?と不思議に思って失敗1のアプローチで
MovieClip(root.parent.parent).hoge();
でもいけた。(成功2)
※こちらの記事も参考に。あとで試させてもらおう。
AS3 読み込んだ子swfにアクセス 読み込んだ子swfから親swfにアクセス | as3 | メモ | pandama
- Newer: FLV/F4Vのキューポイント
- Older: 血液型「逆」判定 第3回結果発表
Comments:2
- non 10-02-10 (水) 16:31
-
parentはDisplayObjectContainer型なのでhoge()が見つからなくて怒られてしまって、
MovieClipにhoge()があるかはわからないけど、
dynamicなクラスなのでコンパイルが通るということですね。 - tera 10-02-15 (月) 18:27
-
nonさま
なるほど!そうですね!
ありがとうございます。すっきりしました!
今後ともよろしくお願いいたします。






![Flash Math & Physics Design:ActionScript 3.0による数学・物理学表現[入門編]](http://ecx.images-amazon.com/images/I/617sNhK9P9L._SL75_.jpg)


![FLASH ActionScript 2.0入門完全ガイド+実践サンプル集 [CD-ROM付]](http://ecx.images-amazon.com/images/I/51915J1BG6L._SL75_.jpg)


