- ベストアンサー
for文について
以前もお聞きしたかも知れませんが、教えて頂きたく。 7フレームに以下のScriptを記述しています。 sheet.target.duplicateMovieClip(ctr,ctr) ; dummy_loader.loadClip(var_article[ctr-1]+".jpg",sheet[ctr]); gotoAndPlay("rtn") ; dummy_listener.onLoadError = function(target_mc:MovieClip, errorCode:String) { gotoAndstop("end") ; } dummy_listener.onLoadComplete = function(target_mc:MovieClip) { sheet[ctr]._name = ctr ; sheet[ctr]._x += (ctr - 1) * 90 ; var_ctr++ ; dummy_loader.unloadClip(var_article[ctr-1]+".jpg"); }; 「rtn」は6フレームのフレームラベル、「end」は8フレームのフレームラベルです。 var_articleと言う配列に入っている情報(Key項目)を元にJPEGを読込んでいます。 onLoadCompleteにてJPEGをセットして前のフレームに戻して配列にデータが入っている間6<->7フレームをグルグル回って処理しています。 正常に動いています。 これを、No.1005374の#3でDPEさんに指摘して頂いたようにfor文を使ってのループ処理に変えたいと思います。 for(i = 0; i <= ctr; i++) { sheet.target.duplicateMovieClip(ctr,ctr) ; dummy_loader.loadClip(var_article[i]+".jpg",sheet[i]); } これで、1件づつ読込んでonLoadCompleteにて複製したムービークリップに名前を付けて当該の座標に配置しようと試みました。が、結果はfor文が全て処理されてからonLoadCompleteの処理がなされてしまいます。 自らフレームを利用したループと、for文を利用したループと、何処が違うのでしょう?。 どうぞ宜しく御願い致します。
- みんなの回答 (2)
- 専門家の回答
お礼
Traceを駆使して、DPEさんのおっしゃる事を検証しました。 おっしゃった通り、for文の処理が終了した時点でonLoadComplete関数がfor文で処理した回数分実行されました。 今回は、for文で配列に格納した分だけ読込みを行ない、onLoadComplete関数でカウントアップしながら座標の決定とunload処理を行ないました。 for文を記述した2つ先のフレームで終了処理を実施する前に、onLoadComplete関数でカウントした変数と配列に格納した変数を比較して全てが終了していなければ一つ前のフレームに戻ると言うループ処理を行ないました。 MovieClipLoaderの持つイベントを有効利用したとは言えませんが、何とか今回はMovieClipLoaderを使って完成させる事にしました。 これからも、色々お教えください。 ありがとうございます。