Flash 如何将所有按钮置于空气/闪光灯中
我正在使用以下代码为我的Flash 如何将所有按钮置于空气/闪光灯中,flash,actionscript-3,air,movieclip,simplebutton,Flash,Actionscript 3,Air,Movieclip,Simplebutton,我正在使用以下代码为我的swf文件中的所有SimpleButtons的click事件注册一个函数。 名称以“b”开头的SimpleButtons必须注册。但它并不适用于所有按钮。另一个MovieClip或其他帧中的某些按钮将不可见! 我在第一层的第一帧中调用这个方法 findChilds(this); function findChilds(obj:*):void { if (obj == null) { return; } //trace(ob
swf
文件中的所有SimpleButton
s的click事件注册一个函数。
名称以“b”开头的SimpleButton
s必须注册。但它并不适用于所有按钮。另一个MovieClip
或其他帧中的某些按钮将不可见!
我在第一层的第一帧中调用这个方法
findChilds(this);
function findChilds(obj:*):void
{
if (obj == null)
{
return;
}
//trace(obj.name);
if (obj.name.substr(0,1) == "b")
{
obj.addEventListener(MouseEvent.CLICK, onMediaClicked);
trace(obj.name, " registered for click.");
}
try
{
// some type of objects hasn't numChildren property, so i
// used try/catch statement, i know this way has bad performance. I fix it later
for (var i:int = 0; i < obj.numChildren; i++)
{
findChilds(obj.getChildAt(i));
}
}
catch (e:Error)
{
}
}
findChilds(这个);
函数findChilds(obj:*):void
{
if(obj==null)
{
返回;
}
//跟踪(对象名称);
如果(对象名称子字符串(0,1)=“b”)
{
obj.addEventListener(MouseEvent.CLICK,onMediaClicked);
跟踪(obj.name,“为点击注册”);
}
尝试
{
//某些类型的对象没有numChildren属性,因此我
//使用try/catch语句,我知道这种方法的性能很差。我会稍后修复它
for(变量i:int=0;i
请帮忙(您需要在每一帧上调用
findChild(this)
,因为如果在第一帧上调用它,则只有后续帧中的对象尚未加载(因此无法访问)。您可能需要使用hasEventListener
来确保不会两次添加相同的事件侦听器(或者使用一些数组来跟踪调用了哪个帧findChild(this)
on)
无论如何,您的方法不是一个很好的方法,维护起来会是一场噩梦。您应该尝试“手动”添加事件侦听器。它可能不会花费太多的工作,而且从长远来看更易于维护。@Kodiak:这样在
MovieClip
中找不到其他帧中的一些按钮:(