- ベストアンサー
MovieClip(root)について
ActionScript3.0で、ルートタイムラインにある変数の代入処理を、他の階層(ムービークリップなど)から命令する場合、 私は MovieClip(root).hoge = MovieClip(root).fuga; と書きますが、 MovieClip(root)を1回しか書かずに済ませる書き方は、ありませんでしょうか? ※その都度書くのは、あまり効率が良くないと思ったので。 たとえば、FlashLite1.1では、 tellTarget("/"){ hoge = fuga; } と書けて、効率が良いのですが、、、 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
前置きとして, root の階層には変数「fuga」とその「fugaの値」がすでに与えられている(定義されている)ものとします。 その場合, 普通は次のように書きます。 //---------------------------------------- var my_mc:MovieClip = MovieClip(root); my_mc.hoge = my_mc.fuga; //---↓検証してみるとするなら↓--- trace(my_mc.hoge); trace("↑↓同じでしょう?") trace(MovieClip(root).hoge); //---------------------------------------- もし仮に root の階層には変数「hoge」とその「hogeの値」までもが すでに与えられている(定義されている)場合に限っては with も使えますが...(使えますがあまり推奨されていませんよ。)。 //---------------------------------------- var my_mc:MovieClip = MovieClip(root); my_mc.hoge = 0; with(my_mc){ hoge = fuga; } //---↓検証してみるとするなら↓--- trace(my_mc.hoge); trace("↑↓同じでしょう?") trace(MovieClip(root).hoge); //----------------------------------------
その他の回答 (1)
- BlurFiltan
- ベストアンサー率91% (1611/1754)
#1です。 #1の お礼 より引用 > MovieClip(root).hoge = MovieClip(root).fuga; > と書かずに、 > > var my_mc:MovieClip = MovieClip(root); > my_mc.hoge = my_mc.fuga; > と書くのは、 > 繰り返し、rootをMovieClip型に型変換するのは > 効率が悪いから、でしょうか? むむむむ??? それは確かにその通りです。 書かれている通りで効率が悪いからですが, それ以前の問題で, ご質問に > MovieClip(root)を1回しか書かずに > 済ませる書き方は、ありませんでしょうか? と書かれているのでしょう? ですから その "1回しか書かず" の例を示しているわけです。 効率が良い悪いよりもっと前段階(最低条件)の話でそう書いているのです。
お礼
>> MovieClip(root)を1回しか書かずに >> 済ませる書き方は、ありませんでしょうか? >と書かれているのでしょう? >ですから その "1回しか書かず" の例を示しているわけです。 たしかに、私が、そうお願いしていました。 失礼しました^^; 大変勉強になりました。 ありがとうございます。
お礼
回答ありがとうございます^^ 大変参考になります。 MovieClip(root)と書くことで、 プロパティrootを、MovieClip型に型変換している、 と、私は理解しております。 MovieClip(root).hoge = MovieClip(root).fuga; と書かずに、 var my_mc:MovieClip = MovieClip(root); my_mc.hoge = my_mc.fuga; と書くのは、 繰り返し、rootをMovieClip型に型変換するのは 効率が悪いから、でしょうか? また、withを使った書き方があり、 なおかつ非推奨なんですね。 今まで疑問に思っていた部分が、スッキリしました。 ありがとうございます。