Reputation: 5599
I've got as far as adding multiple buttons to the stage with AS3 and giving them unique instance names, but now I have a problem. There is no limit on the amount of buttons that could be present, there could be one or one hundred so I can't hard code.
How would I go about creating event listeners for each button? I tried pushing each instance name into an array then looping through but that gave me an error about how the buttons didn't exist, so it can't listen.
How would I do this? Any help is much appreciated!
Upvotes: 0
Views: 2540
Reputation: 388413
Some example:
function init ():void
{
var btn:Sprite;
for ( var i:uint = 0; i < 100; i++ )
{
btn = new Sprite();
btn.graphics.beginFill( Math.round( Math.random() * 0xFFFFFF ) );
btn.graphics.drawRect( 0, 0, 50, 50 );
btn.x = ( i % 20 ) * 50;
btn.y = Math.floor( i / 20 ) * 50;
// event listeners
btn.addEventListener( MouseEvent.CLICK, btnClick );
this.addChild( btn );
}
}
function btnClick ( event:MouseEvent ):void
{
var btn:Sprite = event.currentTarget as Sprite;
btn.graphics.clear();
btn.graphics.beginFill( Math.round( Math.random() * 0xFFFFFF ) );
btn.graphics.drawRect( 0, 0, 50, 50 );
}
In the same way you could add a subclass of Sprite and for example keep an additional public identifier or whatever with it. Then you can simply look in the click event which was clicked.
Upvotes: 3