子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

このエントリーをはてなブックマークに追加
はてなブックマーク - 子swfから親swfの変数・メソッドを呼び出す

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

Return to page top