AS3:使用eventlistener添加多个按钮进行舞台演出?

时间:2010-02-03 14:26:42

标签: flash actionscript-3 adobe

我已经为AS3添加了多个按钮并为它们提供了唯一的实例名称,但现在我遇到了问题。可能存在的按钮数量没有限制,可能有一个或一百个,所以我不能硬编码。

我如何为每个按钮创建事件侦听器?我尝试将每个实例名称推送到一个数组然后循环,但这给了我一个关于按钮不存在的错误,所以它不能听。

我该怎么做?任何帮助深表感谢!

1 个答案:

答案 0 :(得分: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的子类,例如保留一个额外的公共标识符或其他任何内容。然后,您只需查看点击的点击事件即可。