2010-02-03 2 views
0

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

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

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

ответ

3

Некоторые примеры:

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 и, например, держать дополнительный публичный идентификатор или любой другой с ним. Затем вы можете просто посмотреть в клик, который был нажат.

+0

Это работает красиво, спасибо! Я разработал свою проблему, я пытался проверять кнопки через их имя экземпляра и устанавливать это имя экземпляра с именем «.name», но, согласно статье, которая не работает в AS3, я должен использовать массив, который я сделал ! Я обновил свой код, чтобы отразить некоторые из вас, очень ценится, вы указываете мне в правильном направлении! (статья в вопросе: http://www.calypso88.com/?p=302) – sam

+0

Да, в объектах AS3, выставленных на сцену с именем экземпляра, больше похожими на предопределенные переменные, к которым вы можете получить доступ. Рад, что смог помочь :) – poke

Смежные вопросы