• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【ActionScript】この繰り返し記述は一般的でしょうか…?(for文))

【ActionScript】この繰り返し記述は一般的でしょうか…?(for文)

このQ&Aのポイント
  • ActionScriptでの繰り返し処理で、_root.box1._visible = false;という記述を使用しているかわりに、for文を使用する方法についての質問です。
  • 現在はfor文を使用して_root.box1._visible = false;のように一つずつ表示制御していますが、もっと一般的な方法があるかどうかを知りたいです。
  • ActionScriptで繰り返し処理を行う際に、_root[ ]を使用する方法が一般的かどうかについての質問です。もし他に一般的な方法があるのであれば教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
noname#35109
noname#35109
回答No.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)

noname#35109
noname#35109
回答No.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); } ですから,これも一般的ではありません。 やはり,ご質問で書かれているのが,一般的だと思います。

ikataro
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ActionScriptでの繰り返し記述をすっきりまとめたい

    FLASHのActionScriptを勉強中です。 繰り返し同じ様なものを記述する場合、for文か何かを使うと思うのですが、以下の場合はどうすればいいのでしょうか? *プログラムの内容は複数のインスタンスを表示してクリックで順次消えるというものです。インスタンスに記述ではなく、フレームに記述しています。(イベントハンドラメソッド) this.b1.onRelease = function(){ _root.b1._visible = false; }; this.b2.onRelease = function(){ _root.b2._visible = false; }; this.b3.onRelease = function(){ _root.b3._visible = false; };      以下繰り返し… お詳しい方、よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • JavaScriptでfor文

    初歩的な事ですが教えて下さい。 for文で宣言した変数をfor文内で変更した時、 通常の記述で上手く動作しません。 どのようにしたら良いのでしょうか? 意味をなさないfor文ですが… for (var i=0; i<5;i++){ alert("i=" + i); i=4; //ここが上手くいかない } 以下のようにすると意図した通りになります。 が、なんかかっこ悪い?違う気がする… for (var i=0; i<5;){ alert("i=" + i); i=4; //これだと上手くいく i++; } 上記以外のメジャーな方法って有るのでしょうか? それともこれが最善でしょうか?教えて下さい。

  • forを使ってまとめたいのですが

    いつも、ありがとうございます。WinXP Flash8です。 forを使って40個のボタンへの _root.pB.btn_1.enabled = false; _root.pB.btn_2.enabled = false; _root.pB.btn_3.enabled = false; というスクリプトをまとめようと思いましたがうまくいきません。 for (i = 1; i <= 40; i++) { _root["pB.btn_" + i].enabled = false; } としていますが、何がぬけているかご指摘ください。 pBの前に.が必要でしょうか? それでも、うまくいかなかったのですが??? よろしく、お願いします。

    • ベストアンサー
    • Flash
  • Flash for文の修正

    こんにちは. 今回は自分で書いたfor文の修正をお願いしたく書き込みました. for(i=1; i<=20; i++){ _root["btn"+i].onRelease = function() { _root.screan.loadMovie("loadmc"+i+".swf"); }} この記述の場合,ボタンを押してロードされるswfは,"loadmc21.swf"を選択しようとします.btn15をクリックしたらloadmc15.swfがロードされるように作りたいのです. そして,loadmcの指定を再度行うことも試してみました. for(i=1; i<=20; i++){ _root["btn"+i].onRelease = function() { for(j=1; j<=20; j++){ _root.screan.loadMovie("loadmc"+j+".swf"); }}} この場合は,loadmc1~20すべてをロードしようとします. iとjの相互関係を示したスクリプトが必要なのでしょうか?

  • for文

    for文なのですが、 scanfで得た、 iを for文のi--で、一づつへらしてますが、 0でfor文がおわりますが 0で終わりの記述がない気がするんですが、 どうしてでしょか? int main(void) {    int i;    printf("正の整数を入力してください。\n");    scanf("%d",&i);    for( ; i ; i--)    printf("qが入力されました。\n");    return 0; }

  • for文を簡単な処理に書き変えたい

    いま、配列を作る作業をしているのですが、for文を使うと、forをいくつ書けば良いのか分からない状態です。 作ろうとしている配列が、A[X][Y]で、Xの要素数は固定で良いのですが、Yの要素数が実験のたびに変動するためです。そして、処理したいのが、この配列の各列の値を適当な値(このfor文の前に値が決まっています)を代入することです。 例えば、for文だと、Y=3のときには for(i=0;i<○;i++){ for(j=0;j<○;j++){ for(k=0;k<○;k++){ A[line][0] = C[i];//(Cという配列のi成分) A[line][1] = B[j]; A[line][2] = E[k]; } } } のように書くような内容なのですが、Yが増えると、for文も増やさないといけません。 ここで、再帰処理のような方法をつかってうまく書きたいのですが、どう書いたら良いのか分かりません。 一般的なfor文の書き換え方みたいなことでも良いので、教えて頂けませんか?宜しくお願いします。

  • VB For-Next文でのExitではなく中断は可能?

    初歩的な質問で申し訳ありません・・・ ループで処理しているものがあるのですが、ExitForでループを抜けることはできますが、途中で処理を中断して次のカウンタの処理へ移ることはできるのでしょうか? 例えば For i = 1 to 10   if 関数1() = False then     ■ループ処理を終了するのではなく次のカウンタ[i]に移りたい■   else     Call 関数2()   end if Next i という事をしたいと思っています。 今は For i = 1 to 10   ret = 関数1()   if ret = True then     Call 関数2()   end if Next i という方法で記述していますが、上記のような条件文が10や20もあると、IF文の入れ子入れ子でかなりコードが見にくいです・・・。 どなたかよろしくお願いします!

  • フォーム & FOR文

    TEXTBOX1,TEXTBOX2,....をFOR文でまわして処理をしたいのですが、 やり方としては For i = 1 To 8 hairetu(i) = TextBox & i &.Text Next にするとエラーになってしまいます。 何か方法はないでしょうか?

  • For文の終了値を関数にしても問題ないですか

    VB6です。 For文の終了値が関数になっている場合、この関数の評価はFor文を実行する最初に1回しか行われない(関数は1度しか呼ばれない)ということがVBの規約か何かどこかで明記されているでしょうか。 例) For i = 0 To Func(i) (処理) Next Function Func(i as integer) as integer Func = i + 1 End Function という風に記述した場合、(処理)が2回実行されるてループを抜けることが確認できました。これはi=0のときに関数Funcを一回だけ実行しているということです。(デバッグモードでそれを確認) これは、規定の動作なのかそれともたまたまなのでしょうか。 上記のFor文でもし毎回Funcが評価されると無限ループになってしまいます。

  • for文

    質問お願い致します。 これのソースのfor文を一つの文にするにはどのように書いたらよいでしょうか? お願い致します。 //指定された文字列が"a"と"b"の両方を含む場合はtrue、なければfalseを返す public class Mondai { public static void main(String[] args) { System.out.println("解答 :" + charBothContain("Habllow")); } public static boolean charBothContain(String str) { boolean answer1 = false; boolean answer2 = false; for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (c == 'a') { answer1 = true; break; } } for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (c == 'b') { answer2 = true; break; } } return answer1 && answer2; } }

    • ベストアンサー
    • Java