- ベストアンサー
【ActionScript】ムービークリップ間の変数の受け渡しのやり方は?
ムービークリップ間の変数の受け渡しがいまいちわかりません。 例えば、 ・_root.mc1 及び、 ・_root.mc1.mc2 というインスタンスがあった場合、 _root.mc1.mc2 のフレームに a = 100; と書き、 _root.mc1 のフレームに trace(_root.mc1.mc2.a); と書いても「undifined」と出るだけです。 (上層の値を下層で受けることはできるんですが、この例のように下層→上層の受け渡しはできないのです。) どうすればインスタンス間の変数の受け渡しができるのでしょうか。 よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
解決は難しい問題ですが, 理由は簡単です。 まず mc1 がロード(表示)されて, trace(_root.mc1.mc2.a); が実行され, 次に mc2 がロード(表示)されて, a = 100; が実行されるからです。 a が未定義のときに trace しても,未定義なので undifined です。 つまり,mc2 のフレーム1に trace(_root.mc1.mc2.a); a = 100; と書いているようなものです。 mc1 のフレームを2フレームにして, そのフレーム2に this.stop(); trace(_root.mc1.mc2.a); mc2 のフレーム1に a = 100; と書くと, まず mc1 がロード(表示)されて, 次に mc2 がロード(表示)されて, a = 100; が実行され mc1がフレーム2に進み trace(_root.mc1.mc2.a); が実行されます。 a = 100; という定義後に trace が実行されるので 100 が表示されます。 どんな場合でもそうとは限りませんし, どんな場合でも使える方法ではないので,完全な解決は難しいですが, 一応理由としてはそういうことです。 タイミングの問題です。
お礼
なるほど。やはり順番が問題ですか・・ プログラムは同じ場所に書くようにします。 どうもありがとうございました。