创建影片剪辑AS3的矢量数组

时间:2013-12-09 17:29:07

标签: actionscript-3 vector flash-cs6

我的主要.fla的舞台上有几个电影剪辑名为btn1-btn7,它们将充当按钮。我有一个名为Functions.as的类文件,其中单击一个按钮时会创建一个事件侦听器。 onButtonClicked只是在时间轴上的一个框架。

obj.addEventListener(MouseEvent.CLICK, onButtonClicked);

我希望能够同时设置所有按钮的buttonMode,可见性等。我一直在研究这几个小时,但我找不到任何解决方案。我现在正在考虑将它们添加到矢量(这对我来说是一个新概念),但我不确定如何正确执行此操作。这是我到目前为止所做的。

public var buttons:Vector.<MovieClip >  = new Vector.<MovieClip > ();


        function addButtons()
        {
            buttons.push(btn1,btn2,btn3,btn4,btn5,btn6,btn7);

            for (var i:int; i<buttons.length; i++)
            {
                trace(buttons[i].name);
            }


        }

如何将事件监听器添加到所有对象中?我还将buttonMode设置为true,并使它们同时不可见。我甚至不知道是否有可能实现这一目标。提前感谢您的任何建议。

2 个答案:

答案 0 :(得分:0)

您只需要在示例代码中使用.name属性执行您正在执行的操作。您需要循环遍历阵列中的每个按钮(或矢量,如果您愿意)。以下是如何设置buttonMode的属性的示例:

function setButtonMode(b:Boolean):void {
    for(var i:int=0; i<buttons.length; i++) {
        var btn:MovieClip = buttons[i]; //store the current reference in a var for faster access
        btn.buttonMode = b;
        btn.mouseChildren = !b;
    }
}

答案 1 :(得分:0)

我将假设您使用时间轴代码,并且按钮的实例已经放置在舞台上。首先,创建向量:

var _btns:Vector.<MovieClip> = new Vector.<MovieClip>;
_btns.push(btn1,btn2,btn43....) //add all the buttons

然后,您可以初始化所有按钮的属性:

var _mc:MovieClip;//helper var
for(var i:int=0,i<_btns.length;i++)
{
   _mc = _btns[i];
   _mc.visible = false;
   _mc.buttonMode = true;
   _mc.addEventListener(MouseEvent.CLICK, onClick);
}

然后,事件处理程序:

function onClick(e:MouseEvent):void
{
  for(var i:int=0,i<_btns.length;i++)//reset all the buttons
  {
    _btns[i].visible = false;
  }

  _mc = MovieClip(e.eventTarget);
  _mc.visible = true; //make visible the clicked one
}