都道府県穴埋めゲーム

_root.box1._visible = false;
_root.box2._visible = false;
_root.box3._visible = false; ・・・

という記述を現状、

for(i=1; i<=10; i++){
_root["box" + i ]._visible = false;
}

というfor文で処理しています。
これ自体問題なく動作するのですが、この
_root[ ]
を使うあたりが「一般的な方法」なんだろうか?とふと思いました。
もしさらに一般的な方法があるのなら知っておきたいと思います。
お詳しい方、よろしくお願いいたします。

A 回答 (2件)

一般的だと思いますよ。


[ ] = 配列アクセス演算子 を使って,オブジェクト名を指定するときは,
前に _root などのパスを入れないと,オブジェクト名だと認識しない仕様になっていますから,
パスは必要です。

でも,何か腑に落ちませんよね。
その気持ちもわかります。
でも仕様ですからしようがないもので,書かれているものが一般的です。

「絶対に _root などパスを付けたくない!」
とおっしゃるのでしたら,古くからある方法で,eval を使う方法があります。


for (i=1; i<=10; i++) {
eval("box"+i)._visible = false;
}


ただしこの↑スクリプトは, _root に書いた場合のスクリプトです。
他のムービークリップ内だと,
eval("_root.box"+i)._visible = false;
となります。
また上の場合は,うまく行くと思いますが eval は普通は左辺ではつかわないものとされています。

「左辺にある Eval() が正常動作しない」
http://www.adobe.com/jp/support/flash/ts/documen …

ですから一般的ではありません。



また,こんな方法もありますが,
これを使うのは,今や Flash Lite くらいなものでしょう。


for (i=1; i<=10; i++) {
setProperty(eval("_root.box"+i), _visible, false);
}


もしくは,


for (i=1; i<=10; i++) {
setProperty(eval("/box"+i), _visible, false);
}


ですから,これも一般的ではありません。
やはり,ご質問で書かれているのが,一般的だと思います。
    • good
    • 0
この回答へのお礼

そうですか!初心者向け専門書には解説がないもので不安に思ってました。
今後は安心して使えそうです。
ありがとうございました!

お礼日時:2006/06/02 23:18

#1です。


若干訂正です。
#1で書いた最後の2つのスクリプトですが,
そのままでもうまく動きますが,一般的ではありませんでした。


for (i=1; i<=10; i++) {
setProperty("_root.box"+i, _visible, false);
}

もしくは,

for (i=1; i<=10; i++) {
setProperty("/box"+i, _visible, false);
}


が一般的です。
しかし,これは Flash Lite で一般的なだけで,普通の Flash では一般的ではありません。
    • good
    • 0

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


おすすめ情報