我已经为AS3添加了多个按钮并为它们提供了唯一的实例名称,但现在我遇到了问题。可能存在的按钮数量没有限制,可能有一个或一百个,所以我不能硬编码。
我如何为每个按钮创建事件侦听器?我尝试将每个实例名称推送到一个数组然后循环,但这给了我一个关于按钮不存在的错误,所以它不能听。
我该怎么做?任何帮助深表感谢!
答案 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的子类,例如保留一个额外的公共标识符或其他任何内容。然后,您只需查看点击的点击事件即可。