※ ChatGPTを利用し、要約された質問です(原文:引数が変わってしまいます。)
配列に複数のオブジェクトを追加して処理する際の引数の動作に問題がある
このQ&Aのポイント
AC3で開発を行っている中で、複数のオブジェクトを配列に追加して一気に処理しようとしていますが、引数の動作がうまくいきません。
問題のソースコードを確認すると、peat配列にfg1とfg2のオブジェクトを追加していますが、クリックイベントの処理でそれぞれのオブジェクトを参照することができません。
for文の中でクリックイベントの処理を設定していますが、peat[i]を参照すると、どちらのオブジェクトもpeat[2]となってしまいます。
AC3で開発を行っております。
複数のオブジェクト(変数の種類は同じ)を配列で確保し、
一気に処理をしようとしているのですが、引数の動作がうまくいきません。
以下が問題のソースです。
var peat:Array ;
var fg1:Object = new Object();
var fg2:Object = new Object();
fg1 = { _sp:Sprite, _img:Loader , _url:String , _x:int, _y:int };
fg2 = { _sp:Sprite, _img:Loader , _url:String , _x:int, _y:int };
peat = new Array( fg1 );
peat.push( fg2 );
for(i = 0;i < 2;i++)
{
// 値の代入
// クリック時の処理
peat[i].sp.addEventListener( MouseEvent.CLICK
, function(event:MouseEvent):void{
test(event, arguments.callee, peat[i]);
}
);
}
クリックしたときに それぞれのオブジェクトを参照したいのですが、
どちらも peat[2] を参照しているようなのです。
(for文の後に i=0 とすると先に設定したほうは正しく動作します。)
AC3での開発が初めてなので、変数の宣言から怪しいかも知れませんが
ご助力お願いいたします。
お礼
ご回答ありがとうございます。 お教えいただいた方法で、望みどおりの動作をしました。