• ベストアンサー

配列アクセスで困っています

WINXP Flash8です。とても基本的な質問ですみません。 t0.gotoAndStop (2); t1.gotoAndStop (2); t2.gotoAndStop (2); をt19まで続けたいのですが、for文がうまくできません。 for (i = 0; i < 20; i++) { t[i].gotoAndStop (2); } ではないようで、どうしたらいいのか悩んでいます。 よろしく、お願いします。

  • Flash
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.1

t0 や t1 などの文字列をムービークリップインスタンスの参照に変換する時は、"t" + 番号 の部分を [ ] 演算子でくくります。 これらのムービークリップがあるタイムラインのフレームにスクリプトを記述しているのでしたら、  this[ "t" + i ].gotoAndStop( 2 ); で、いかがでしょう。 違う階層にあるムービークリップを同様の要領で操作するならば、  ターゲットパス[ "t" + i ].gotoAndStop( 2 ); です。 ターゲットパスの部分には、t0 ~ t19 の持ち主であるムービークリップを指すターゲットパスを記述します。this や _parent を使った相対表現・ _root からの絶対パスのほか、t0 ~ t19 があるムービークリップの参照を代入した変数を使うこともできます。

Flash-love
質問者

お礼

ありがとうございます。 いつも、悩むところです。参考にいたします。

関連するQ&A

  • if文での記述の仕方がわからなくて困っています

    winxp flash8です。いつもありがとうございます。 if分で分岐したいのですが記述の仕方が違っているらしくスクリプトが通らなくて困っています。下記のようにかいています。 if (eval ("atari" + i) == 0)が違うようです。 // 30個のブロックをfor文で処理する for (i = 0; i < 30; i++) { if (flg[i] == 1) { continue; } // 次のループへ // ボールとブロック t i 番目 が当たったとき if (this._parent.tama0.hitTest (eval ("this._parent.t" + i))) { trace((eval ("atari" + i))); if (eval ("atari" + i) == 0) { //シルエットをとる eval ("this._parent.t" + i).gotoAndStop (1); set(eval ("atari" + i), 1); } else if (eval ("atari" + i) == 1) { // ブロックを非表示に eval ("this._parent.t" + i)._x = 77; eval ("this._parent.t" + i)._y = -100; flg[i] = 1; // 消えた事をあらわすフラグ

    • ベストアンサー
    • Flash
  • 配列の値をループ

    よろしくお願いします。 例えば、$ary=array(1,2,3,4,5,6,7); という配列があるとします。この1,2,3,4,5,6,7の値を ループで表現することは可能でしょうか?? for文で試してみましたが、 $hoge="for($i=0;$i<7;$i++){ print $i; }"; $ary=array($hoge); 表示結果 for($i= でした。""で囲んだのでそのまま文字としてなったんだと 思います。""をはずすとエラーになります。 理想の表示結果は当然 1,2,3,4,5,6,7です。 行いたいことの意図はわかっていただけたでしょうか? 可能な場合、どういう記述をすればうまくいくのでしょうか? それとも不可能なのでしょうか?よろしくお願いします。 環境 php4.4.4 apache2 winXP

    • ベストアンサー
    • PHP
  • for文での配列の書き方で質問です

    CS3でゲームを作っています。 レモンが31個あり落ちてくるのをうけとります。 この受け取るときのfor文に以下のように書きました。 lemon_s.lemon0.hana.kajituの0~30までを参照したいのですが 配列のところがわかりません。 _root["lemon_s.lemon"] + i+["hana.kajitu"] というのがたぶん違っていてうまくいかないのだと思いますが 正しい書き方を教えてください。 onClipEvent (enterFrame) { for (i = 0; i < 30; i++) { if (this.in_ok.hitTest (_root["lemon_s.lemon"] + i+["hana.kajitu"])) { _root.point++; trace (_root.point); _root["lemon_s.lemon"] + i+["hana"].gotoAndStop (3); } } }

  • Rubyで配列を使ったfor文の中に条件つきif文

    Rubyで配列を使ったfor文の中に条件付きのif文を入れてループさせたいのですが、基本的な構文が分かりません。 for i in array     if i == 9       array[i] << 'ア'     end end という雰囲気で書きたいのですが、どうしたらよいでしょうか。 i番目のループまで、配列のarrayを走査するにはどうすればよいでしょうか。 基礎的な質問ですみません。よろしくお願いします。

  • 大量の配列

    Actionscript2.0で書いています。 複数の写真をランダムで表示させたいと考えています。 var photo = new Array(1,2,3,4,5);     ・     ・ 【シャッフル処理】     ・     ・ photo1.gotoAndStop(photo[0]); photo2.gotoAndStop(photo[1]); photo3.gotoAndStop(photo[2]); photo4.gotoAndStop(photo[3]); photo5.gotoAndStop(photo[4]); もしくは photo1.loadMovie("photo" + photo[0] + ".jpg"); photo2.loadMovie("photo" + photo[1] + ".jpg"); photo3.loadMovie("photo" + photo[2] + ".jpg"); photo4.loadMovie("photo" + photo[3] + ".jpg"); photo5.loadMovie("photo" + photo[4] + ".jpg"); といった具合です。 写真が大量になると、 new Array(1,2,3,4,5,6,7,8 …);と書いていくのも大変だし、 photo1.gotoAndStop(photo[0]); photo2.gotoAndStop(photo[1]); … と記述するのも大変です。 後の方はforを使えば出来るのかなとも思うのですが、 出来れば配列の宣言(?)を簡略化出来たらと思います。 何かまとめて書くいい方法は無いでしょうか?

    • ベストアンサー
    • Flash
  • 配列

    配列を使って合計を計算したいんですが total[0]+=tensu[0]; total[1]+=tensu[1]; 上のように延々と一つずつ書いていくんではなく for(int i=0;i<2;i++); total[i]+=tensu[i]; 上のように一文で計算式を書いてしまいたいんですが 実行しても上手くいきません この式やっぱりおかしいんでしょうか?

    • ベストアンサー
    • Java
  • プログラミングの配列で

    3*3の魔法陣を #include<stdio.h> int main(void) { int mg[3][3],i=1,j,no=3,k; j=(no+1)/2; mg[1][j]=1; for(k=2;k<=no*no;k++){ if(k%no==1) i++; else if(i==1){ i=no; j++; } else if(j==no){ i--; j=1; } else { i--; j++; } mg[i][j]=k; } for(i=1;i<=no;i++){ for(j=1;j<=no;j++) printf("%3d",mg[i][j]); printf("\n"); } return(0); } と作ってみたのですが、 if文やelse文内のi++やi=などを、 すべてfor文を使って表したい場合、 どのように変更したらいいですか? 他の部分(if文やelse文以外)をいじってもいいので、 教えてください。

  • 配列について

      class Array01{ public static void main(String[] args){ int[][] ia = {{11,12},{21},{41,42,44}}; for(int i = 0; i < ia.length; i++){ for(int j = 0; j < ia[i].length; j++ ){ System.out.print(ia[i][j] + " "); } System.out.println(); } } } } (i < ia.length) と (j < ia[i].length)のとこの意味が分かりません。特にiaとia[i]の違いなんか教えてもらえると助かります。for文については理解してるんですが・・・

    • ベストアンサー
    • Java
  • for文で配列を引数として

    こんばんは。 for文で配列a[i][j]を引数として何らかの関数を呼び出すときがうまく動かないって事が起きてます。その関数にa[0][3]のように指定して動かすとうまく動くのですが・・・。 どうしてなのか分かりますか? for(i=0;i<=5;i++){ for(j=0;j<=6;j++){ ここで関数呼び出し; } } 抽象的な質問ですみません。

  • ポインタ配列

    "one","two","three","four","five","six","seven","eight","nine","ten" のポインタ配列の文字列を、ASCIIコード順に並べ変えようと思ったのですが、 もうどこが間違っているかさえわからないぐらいになってしまいました。 まだまだはじめたばかりなもので、わからないことだらけなんで、 できるだけわかりやすい説明おねがいします。 関数の引数に問題があるのじゃないかと思ったのですが、 何かいいアドバイスありましたら、お願いします。 #include <stdio.h> /* 関数のプロトタイプ宣言 */ int strmp(char *,char *); void cpy(char *,char *); int main (void) { /* ポインタ配列の定義 */ char *x[10]={"oneee","twooo","three","fourr","fivee","sixxx","seven","eight","ninee","tennn"}; /* ポインタのポインタの定義 */ char **pp=x; char k[100]; char *p=k; int i,t,a,b,c,d; a=0; /* ポインタ配列を自作関数を使って、ASCIIコードの大きいほうからに並び替える */ for(i=0;i<9;i++) { for(t=1;t<10;t++) { a=strmp(*(pp+i),*(pp+t)); if(a<0) { cpy(p,*(pp+i) ); cpy(*(pp+i),*(pp+t) ); cpy(*(pp+t),p); } } } for(i=0;i<10;i++) { printf("%s ,",x[i]); } printf("\n"); return 0; } /* 文字の比較をする関数 */ int strmp(char *x,char *y) { int i; for(i=0;*(x+i)==*(y+i);i++) { if( *(x+i)=='\0') { return 0; } } return *(x+i)-*(y+i); } /* 文字をコピーする関数 */ void cpy(char *a,char *b) { int i; for(i=0;*(b+i)!='\0';i++) { *(a+i)=*(b+i); } *(a+i)='\0'; }

専門家に質問してみよう