2010-02-03 84 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); 
} 

在你可以加雪碧的子类,例如保持额外的公共标识或任何与它相同的方式。然后,您只需查看点击的点击事件即可。

+0

工作很好,谢谢!我解决了我的问题,我试图通过实例名称来检查按钮,并使用“.name”设置实例名称,但根据一篇不适用于AS3的文章,我应该使用一个数组, ! 我更新了我的代码以反映你的一些情况,非常感谢,你指点我正确的方向! (文章有问题:http://www.calypso88.com/?p = 302) – sam 2010-02-03 16:27:31

+0

是的,在AS3中,用实例名称放置舞台的对象更像是预先定义的变量,您可以访问。很高兴我能帮上忙 :) – poke 2010-02-03 17:10:53