flash アクションスクリプトです


for (i = 0; i < 10; i++) {
var mc:MovieClip = _root.createEmptyMovieClip("mc"+i,i);
mc.loadMovie(images);
}

とし、他でmcの_x _y などをforループで変更したい場合はどのように記述すれば良いのでしょうか?

"mc"+i の部分をどうすれば良いのかがわかりません

for (i = 0; i < 10; i++) {
xxxxx._x = i*10;
xxxxx._y = i*10;
}

よろしくお願いします

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2007/01/28 23:08:53
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:okuryu No.1

回答回数72ベストアンサー獲得回数3

ポイント35pt

MovieClip.createEmptyMovieClip メソッドでムービークリップを作成した場合、その戻り値が作成されたムービークリップへの参照になるので次のように _x や _y などのプロパティを定義できます。

for (var i:Number = 0; i < 10; i++) {
    var my_mc:MovieClip = _root.createEmptyMovieClip("new_mc" + i, i);
    my_mc._x = i + 10;
    my_mc._y = i + 10;
}
id:worldtravel

ありがとうございます。

これは理解しています。

一度このようにして表示した10個のmcを再度forループで一度に表示位置を変更するにはどうするかが知りたいのです。

例えばあるボタンをクリックすると全てのmcの_yを+10にしたいという場合はどうするかという事です。

これは動きませんがイメージとしてこのようなことをしたいということです。

for (var i:Number = 0; i < 10; i++) {

"new_mc" + i._x += 10;

"new_mc" + i._y += 10;

}

「"new_mc" + i」の部分をどうすれば良いのかを教えて下さい。

よろしくお願いします。

2007/01/28 22:32:13

その他の回答1件)

id:okuryu No.1

回答回数72ベストアンサー獲得回数3ここでベストアンサー

ポイント35pt

MovieClip.createEmptyMovieClip メソッドでムービークリップを作成した場合、その戻り値が作成されたムービークリップへの参照になるので次のように _x や _y などのプロパティを定義できます。

for (var i:Number = 0; i < 10; i++) {
    var my_mc:MovieClip = _root.createEmptyMovieClip("new_mc" + i, i);
    my_mc._x = i + 10;
    my_mc._y = i + 10;
}
id:worldtravel

ありがとうございます。

これは理解しています。

一度このようにして表示した10個のmcを再度forループで一度に表示位置を変更するにはどうするかが知りたいのです。

例えばあるボタンをクリックすると全てのmcの_yを+10にしたいという場合はどうするかという事です。

これは動きませんがイメージとしてこのようなことをしたいということです。

for (var i:Number = 0; i < 10; i++) {

"new_mc" + i._x += 10;

"new_mc" + i._y += 10;

}

「"new_mc" + i」の部分をどうすれば良いのかを教えて下さい。

よろしくお願いします。

2007/01/28 22:32:13
id:okuryu No.2

回答回数72ベストアンサー獲得回数3

ポイント35pt

期待された回答でなくてすいません。

この場合は eval を使うというのはどうでしょうか。

for (var i:Number = 0; i < 10; i++) {
    var my_mc:MovieClip = eval("new_mc" + i);
    my_mc._x = i + 10;
    my_mc._y = i + 10;
}
id:worldtravel

ありがとうございます。

無事動きました。

var my_mc:MovieClip = "new_mc" + i;

自分ではこうやっていたのですが動きませんでした。

eval()でくくらないとダメなのですね。

ありがとうございました。

2007/01/28 23:08:32
  • id:worldtravel
    本でevalの項目を見たら同じような事が載っていました。^^;
    ありがとうございました。
  • id:thecoolmuseum
    書いてる間に終了してしまったようですが・・・

    文字列で名前を指定して参照するためには[]構文を使用できます。

    for (i = 0; i < 10; i++) {
    _root["mc"+i]._x = i*10;
    _root["mc"+i]._y = i*10;
    }


    ムービークリップを生成するときに、配列に入れておいてその配列に対してアクセスするのも、個数などの管理が煩雑になりそうな場合には良いかもしれません。

    var clips:Array=[];
    //
    //
    for (var i = 0; i < 10; i++) {
    var mc:MovieClip = _root.createEmptyMovieClip("mc"+i,i);
    mc.loadMovie(images);
    clips.push(mc);//配列に追加
    }
    //
    //
    for (var i = 0; i < clips.length; i++) {
    clips[i]._x = i*10;
    clips[i]._y = i*10;
    }

  • id:okuryu
    eval を使わないとただの文字列(String)と見られてしまうんですよね。
    JavaScript なんかでも使うことがあります。
    いるかありがとうございます。
  • id:worldtravel
    thecoolmuseumさん
    ありがとうございます。
    そうやると配列でできるんですね。
    配列でできないかなーと思った事が多々あります。
    良く使うと思うので覚えておきます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません