【问题标题】:Easy way of adding muliple buttons to an array or vector in AS3在 AS3 中将多个按钮添加到数组或向量的简单方法
【发布时间】:2015-01-14 13:49:31
【问题描述】:

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 内部)进行相同的更改?当你按下不同的按钮时应该会发生同样的事情,但仅限于按下的按钮被按下。

【问题讨论】:

    标签: arrays actionscript-3 button


    【解决方案1】:

    1) 访问 button[i] 意味着: button 是一个集合,我访问 '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
    }
    

    【讨论】:

    • 感谢您的回答。但是当我尝试使用“Button btn = Button(getChildByName("button" + i));”方法我收到一条错误消息,说“语法错误:在属性 Button 之后需要定义关键字(例如函数),而不是 btn。”,您有解决方案吗?另外,我如何使用您的方法使按下的按钮不可见(例如)?我从未使用过 currentTarget 属性,并将尝试对其进行研究。再次感谢您的帮助!
    • 对不起,我的错。我在想你有一个名为 Button 的课程,我混合了这些语言。我会更新我的答案。
    猜你喜欢
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    相关资源
    最近更新 更多