在AS3中向阵列或向量添加多个按钮的简便方法

时间:2015-01-14 13:49:32

标签: arrays actionscript-3 button

1)我试图将34个按钮添加到一个数组(或矢量,我读的更有效)。每个按钮都被称为button1,button2 .... button34。这是我尝试接近它的方式,但似乎不可能使用下面的方法。我收到一个错误,说该按钮的名称未被识别。有谁知道为什么,或者知道更容易解决我的问题?

var vector: Vector. < MovieClip > = new Vector. < MovieClip > ();
var i = 1; 
while (i <= 34) {
  vector.push(button[i]); //This part does not work
  i++;
}

2)其次,我正在尝试为所有按钮创建一个EventHandler。制作34个事件处理程序(和函数)真的很令人沮丧。是否有任何简单的方法来识别按下哪个按钮,这样我可以对分别按下的按钮(在EventHandler内)进行相同的更改?当您按下不同的按钮时,应该发生相同的事情,但仅限于按钮被按下了。

1 个答案:

答案 0 :(得分:0)

1) 访问按钮[i]表示:按钮是一个集合,我访问'i'元素。如果按钮的名称是“button1”,则必须使用getChildByName获取它。

var vector: Vector. < MovieClip > = new Vector. < MovieClip > ();
var i = 1; 
while (i <= 34) 
{
   vector.push( getChildByName( "button" + i) ); //This part does not work
   i++;
}

2)您可以在eventHandler上使用,在其中您可以通过currentTarget属性访问发件人。例如,你可以在上面描述的while循环中附加事件监听器,并且在这个处理程序中你可以找到带有事件的名称,即(我假设该按钮是一个SimpleButton实例) var vector: Vector. < MovieClip > = new Vector. < MovieClip > (); var i = 1; while (i <= 34) { var btn: SimpleButton = SimpleButton( getChildByName( "button" + i) ): btn.addEventListener( MouseEvent.CLICK, eventHandler ); vector.push( btn ); //This part does not work i++; }

function eventHandler ( evnt: Event )
{
 String callerName = evnt.currentTarget.name;
  evnt.currentTarget.visible = false; // will hide the clicked button
}