dポイントプレゼントキャンペーン実施中!

ActionScript3.0で、ルートタイムラインにある変数の代入処理を、他の階層(ムービークリップなど)から命令する場合、
私は
MovieClip(root).hoge = MovieClip(root).fuga;
と書きますが、
MovieClip(root)を1回しか書かずに済ませる書き方は、ありませんでしょうか?

※その都度書くのは、あまり効率が良くないと思ったので。
 たとえば、FlashLite1.1では、
 tellTarget("/"){
  hoge = fuga;
 }
 と書けて、効率が良いのですが、、、


よろしくお願いします。

A 回答 (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);
//----------------------------------------
    • good
    • 0
この回答へのお礼

回答ありがとうございます^^
大変参考になります。

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を使った書き方があり、
なおかつ非推奨なんですね。

今まで疑問に思っていた部分が、スッキリしました。

ありがとうございます。

お礼日時:2011/10/21 10:43

#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回しか書かず" の例を示しているわけです。

効率が良い悪いよりもっと前段階(最低条件)の話でそう書いているのです。
    • good
    • 0
この回答へのお礼

>> MovieClip(root)を1回しか書かずに
>> 済ませる書き方は、ありませんでしょうか?

>と書かれているのでしょう?
>ですから その "1回しか書かず" の例を示しているわけです。

たしかに、私が、そうお願いしていました。
失礼しました^^;

大変勉強になりました。
ありがとうございます。

お礼日時:2011/10/21 21:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!