電子書籍の厳選無料作品が豊富!

_root.createEmptyMovieClip("test",0);
test._x = 0;
test._y = 50;
test.loadMovie(img);

_root.createEmptyMovieClip("test1",1);
test1._x = 120;
test1._y = 50;
test1.loadMovie(img1);

_root.createEmptyMovieClip("test2",2);
test2._x = 240;
test2._y = 50;
test2.loadMovie(img2);





_root.createEmptyMovieClip("test30",30);
test30._x = 3600;
test30._y = 50;
test30.loadMovie(img30);

というように1~30まで空のムービークリップを作成し、
外部画像を読み込みというのを繰り返し行いたいのですが、
for文を使用してもなぜかうまくいきません。

for(i = 0 ; i < 30; i++;){
_root.createEmptyMovieClip("test"+i,i);
this["test"+i]._x = i*120;
this["test"+i]._y = 50;
this["test"+i].loadMovie(this["img"+1]);
}

と記述しましたが出来ませんでした。
trace(["test"]+i]);
で表示されるのは
test0
test1
.
.
.
test30
でした。

環境はCS3,AC2.0,XPです。

A 回答 (2件)

this==_rootの状態を想定し、確認してみました。


こちらの環境では正常に表示できますから、スクリプトにはもう問題は無いみたいです。

他に考えられる原因としては、
・記載のスクリプトが_root上のものではない(_rootとthisの使い分けをthisに統一すると動くか確認)
・img0~img30という変数が同じ階層に定義されていない(普通にtraceして確認)
・上の値が不正、またはファイルが存在しない(for文中でtrace(this['img'+i]);で確認)
・読み込むファイルがサーバ上・swfがローカル のように、セキュリティでガードされている
・記載のスクリプト以降に同深度に別のものが生成されている(後のほうでtrace(this.getInstanceAtDepth(0));を確認)

あたりでどうでしょう?
とにかく困ったときはtraceを駆使してください。
    • good
    • 0
この回答へのお礼

ありがとうございました。
thisをrootに変えたらできました^^

お礼日時:2009/03/21 22:40

うまくいきません、では一番困ります。


どこまで意図通りに動作し、どこからだめなのかを書くようにしてください。

さて、とりあえず凡ミスを直しましょう。それからどううまくいかないかを補足してみてください。
>for(i = 0 ; i < 30; i++;){
;は2個です。最後のは要りません。
それと、「1~30まで」というのとfor文・最初の具体的なコードとは食い違っていますがどうでしょう?

>this["test"+i].loadMovie(this["img"+1]);
最後の +1 って、ループの意味を成していない気がしますけど。
+iの間違いでしょうかね。




どうでもいいですがtrace(["test"]+i]);も変ですね。
createEmptyMovieClipの戻り値も有効活用するとスクリプトがきれいになるかも。

この回答への補足

すみません。。。。
for(i = 0 ; i < 30; i++){
.
.
}
として、
this["test"+i].loadMovie(this["img"+i]);
にしたのですが、ステージ内に何も表示されない状態です。。

補足日時:2009/03/18 14:14
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/03/21 22:39

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