addEventListener

as3勉強してる、さっぱりわからん。
専門用語もさっぱりわからん。

addEventListenerに引数というのか変数というのかよくわからないけど、そんなのを乗せてfunctionに渡せないのだろうか?

[as3]
for(var i:int=0;i<maxnum ;i++){
bt[i].addEventListener(MouseEvent.CLICK,bt_function,i);
}

function bt_functon(thisNum){
trace(thisNum);
}
[/as3]

みたいな感じにしたい。

ステージに3個のボタンと画像があって、for文でそれぞれのボタンにMouseEvent.CLICKを指定
同じfunctionから各々に対応した画像のalphaを切り替える
なんてしたかったんだけど、function bt_functionはボタンの数だけ作らないとダメなのだろうか?
そんなバカな!?
なんかやり方があるんだろうけど検索の仕方がわからん。

しかしaddEventListenerを調べてみても値を渡せなさそうだ。
引数は5個まであって、1,2が必須で3-5はオプション?

LoaderInfo.addEventListener
addEventListener () メソッド
override public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/flash/events/EventDispatcher.html#addEventListener()

こんなの見つけた
http://blog.img8.com/archives/2008/04/003758.html
http://blog2.bonkura.jp/?p=13

どっちも「AS3:26.イベント発生時の処理に引数を渡す」を参照しているのだけれどリンク先が見えない><
[追記|20100416]
たまたま移転先みつけた。AS3:26.イベント発生時の処理に引数を渡す

[追記|20090725_6:52]
bonkura blogの書き方はas1の時に使った記憶があるけどas3での取り出しが判らず使えないと思ってた(as1だと、this.iで参照できたよね?)
「e.target」で参照できるのかー勉強になりました。
[as3]
for (var i:int=0; i<img_ar.length; i++) {
me = this["bt_" + i];
me.i = i;
me.addEventListener(MouseEvent.CLICK,click_bt);
trace("me +"+me.name);
}

function click_bt(e:MouseEvent) {
trace(e.target.i);
trace(e.target.name);
if (imgloader[e.target.i].alpha == 1) {
imgloader[e.target.i].alpha = 0.2;
} else {
imgloader[e.target.i].alpha = 1;
}
}
[/as3]

あーthis.iで参照できたのはfor文の中でfunctionを書いてたから?
こうゆうのとは根本的に何が違うのかな?
違いが判らないのはセンスが無いからだろうか?
[as3]
for (i = 0; i < 5; i++) {
this["btn" + i].i = i;
this["btn" + i].onRelease = function() {
trace(this.i);
};
}
[/as3]


コメントを残す

メールアドレスが公開されることはありません。

You can add images to your comment by clicking here.