- ベストアンサー
【ActionScript】この繰り返し記述は一般的でしょうか…?(for文)
- ActionScriptでの繰り返し処理で、_root.box1._visible = false;という記述を使用しているかわりに、for文を使用する方法についての質問です。
- 現在はfor文を使用して_root.box1._visible = false;のように一つずつ表示制御していますが、もっと一般的な方法があるかどうかを知りたいです。
- ActionScriptで繰り返し処理を行う際に、_root[ ]を使用する方法が一般的かどうかについての質問です。もし他に一般的な方法があるのであれば教えていただきたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
#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 では一般的ではありません。
その他の回答 (1)
一般的だと思いますよ。 [ ] = 配列アクセス演算子 を使って,オブジェクト名を指定するときは, 前に _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/documents/fl0263.html ですから一般的ではありません。 また,こんな方法もありますが, これを使うのは,今や 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); } ですから,これも一般的ではありません。 やはり,ご質問で書かれているのが,一般的だと思います。
お礼
そうですか!初心者向け専門書には解説がないもので不安に思ってました。 今後は安心して使えそうです。 ありがとうございました!