子swfから親swfの変数・メソッドを呼び出す

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

Comments:2

non 10-02-10 (水) 16:31

parentはDisplayObjectContainer型なのでhoge()が見つからなくて怒られてしまって、
MovieClipにhoge()があるかはわからないけど、
dynamicなクラスなのでコンパイルが通るということですね。

tera 10-02-15 (月) 18:27

nonさま
なるほど!そうですね!
ありがとうございます。すっきりしました!
今後ともよろしくお願いいたします。

Comment Form
Remember personal info
AS3習得本
AS3の全容を学習できる本。この中でどれか1冊自分に合ったものを。
Adobe Flash CS4 詳細!ActionScript3.0入門ノート ActionScript3.0 プロフェッショナルガイド 初めてのActionScript 3.0 Flashユーザーのためのステップアップガイド 詳説 ActionScript 3.0 Actionscript 3.0 Cookbook
AS3発展本
ASでアニメーションさせる面白さを知るための本。
Flash Math & Physics Design:ActionScript 3.0による数学・物理学表現[入門編] ActionScript 3.0 アニメーション AdvancED ActionScript 3.0 Animation (Advanced)
AS2
"Flash"ではなく"ActionScript2.0"学習のための良著。他にもいろいろ読んだけど、この4冊を読んだ後、自分が成長できた感じがしました。
FLASH ActionScript 2.0入門完全ガイド+実践サンプル集 [CD-ROM付] Essential Actionscript 2.0 Flash 8 Essentials Foundation Actionscript Animation: Making Things Move (Foundation)

あわせて読みたいブログパーツ

相互リンク

hi-posiさん
携帯Flashといえばhi-posiの岡田昇三さん。FlashLiteの有益な記事もたくさん書かれていていつもお世話になってます。ついにご挨拶させていただきました。面白すぎる人でしたw。

Return to page top