AS3: добавить несколько кнопок на сцену с EventListener? - PullRequest
0 голосов
/ 03 февраля 2010

Я дошел до добавления нескольких кнопок на сцену с AS3 и присвоения им уникальных имен экземпляров, но теперь у меня проблема. Количество кнопок, которые могут присутствовать, не ограничено, их может быть одна или сотня, поэтому я не могу жестко кодировать.

Как мне создать слушателей событий для каждой кнопки? Я попытался вставить каждое имя экземпляра в массив, а затем выполнить цикл, но это дало мне ошибку о том, что кнопки не существуют, поэтому они не могут слушать.

Как бы я это сделал? Любая помощь высоко ценится!

1 Ответ

3 голосов
/ 03 февраля 2010

Пример:

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 );
}

Таким же образом вы можете добавить подкласс Sprite и, например, сохранить дополнительный открытый идентификатор или что-то еще с ним.Тогда вы можете просто посмотреть на событие щелчка, по которому щелкнули.

...