複数のインスタンスを処理する時のメモ

任意かつ複数の物を処理する時、よく分からなくなる&苦手なので勉強がてらのメモ。

for文で処理するとき
文内でon~のイベントハンドラを設定すると

うまく動かない場合がある。

var arr1:Array=[0,1,2]
for(var i ;iundefindがでる。※そもそも上のスクリプトは動きません。

var names=”hoge”+i;で変数iが一回使われているため
イベントハンドラメソッドで実行するときはiが空っぽなので
スクリプトが記述されたタイムライン上の値を参照する。

【 解決方法 】この例は間違ってます
var arr1:Array=[0,1,2]
for(var i ;arr.length;i++){
var names=”hoge”+i;
var box_mc:MovieClip=this.createEmptyMovieClip(names,i)
box_mc.i=i;
box_mc.onRelease=function(){
box_mc.name=arr[this.i];
trace(box_mc.name)
}
}
ムービークリップ内に変数iを定義して格納しておくとよいみたい。
参照は box_mc内を参照するようにする。
ちなみに box_mc.k=iではダメ。

詳しい情報元:FN0601002 – forループでMovieClipに設定したイベントハンドラメソッドから変数を参照する – Flash : テクニカルノート

michiさんのコメントを受けてつづき
[actionscript]
var arr:Array=[0,1,2];
for(var i:Number=0 ; i第27回 スクリプトで画像を読み込んでみよう:ITpro

【コーヒーブレイク】インスタンスを動的に作成するには
….
また,createEmptyMovieClipメソッドを実行すると,結果として作成したインスタンスへの参照を返します。この仕組みを利用すると,上記のコードは,

var m:MovieClip=_root.createEmptyMovieClip(“photoFrame”, 0);
m._x = 100;
m._y = 40;

と変更することもできます。このほうが見やすいですね。
….

参照ってことはbox_mcからsubbox_mcを見てて変数に入れて使いやすくしているって事か。
[actionscript]
var arr:Array=[0,1,2];
for(var i:Number=0 ; i関連する記事:

複数のインスタンスを処理する時のメモ” に3件のコメントがあります

  1. はじめまして。
    どうも認識が間違ってる気がしたのでコメントさせてください。
    以下のスクリプトで一度テストしてみてはいかがでしょうか。
    「i」はループが終わったあとも空にはならないですし、「box_mc」も残ります。
    releaseイベントを実行するのがループの後になるので、その中で参照している「box_mc」はループで一番最後に代入した値が入ってます。

    //–ここから
    var arr:Array = [0,1,2];

    for(var i=0; i

  2. コメントありがとうございます。
    多分この件は基本的なことなんでしょうけど、自力でスクリプト書きまくってないのであやふやなところが多いです。
    参照元の情報をアバウトにメモっていた+適当スクリプトなところ鋭いツッコミありがとうございます。
    記事は時間をみて直しておきます。

    michiさんのブログも参考にさせていただきます!

    …つーかこういう反応があるってすごいっていうか怖いっていうか(笑)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です