sam
sam

Reputation: 5599

AS3: Add multiple buttons to stage with eventlistener?

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

Answers (1)

poke
poke

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

Related Questions