05 January 2010

addEventListener looping methods in AS3

Instead of using

btn0.addEventListener(MouseEvent.MOUSE_OVER, doSomething);
btn1.addEventListener(MouseEvent.MOUSE_OVER, doSomething);
btn2.addEventListener(MouseEvent.MOUSE_OVER, doSomething);
btn3.addEventListener(MouseEvent.MOUSE_OVER, doSomething);
btn4.addEventListener(MouseEvent.MOUSE_OVER, doSomething);
btn5.addEventListener(MouseEvent.MOUSE_OVER, doSomething);
btn6.addEventListener(MouseEvent.MOUSE_OVER, doSomething);
btn7.addEventListener(MouseEvent.MOUSE_OVER, doSomething);
btn8.addEventListener(MouseEvent.MOUSE_OVER, doSomething);
btn9.addEventListener(MouseEvent.MOUSE_OVER, doSomething);

function doSomething(e:MouseEvent):void {
  txt.text = e.target.name;
}

You could use this
Method 1


for (var i:uint = 0; i < 9; i++) {
this["btn"+i].addEventListener(MouseEvent.MOUSE_OVER, doSomething);
}

function doSomething(e:MouseEvent):void {
txt.text = e.target.name;
}

Download source code:


Method 2


for (var i:uint = 0; i < 10; i++) {
 this["btn"+i].addEventListener(MouseEvent.MOUSE_OVER, doSomething);
}

function doSomething(event : MouseEvent):void {
 switch ( event.target) {
  case btn1 :
   // dosomething
   txt.text="Button 1";
   break;
  case btn3 :
   // dosomethingelse
   txt.text="Button 3";
   break;
  case btn6 :
   // dosomethingelse
   txt.text="Button 6";
   break;
  case btn8 :
   // doSomethingDifferent
   txt.text="Button 8";
   break;
  default :
   // do nothing or something else
   txt.text="Other buttons";
   break;
 }
}

Download source code:

1 comment: