我的主要.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,并使它们同时不可见。我甚至不知道是否有可能实现这一目标。提前感谢您的任何建议。
答案 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
}