Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 如何将所有按钮置于空气/闪光灯中_Flash_Actionscript 3_Air_Movieclip_Simplebutton - Fatal编程技术网

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
中找不到其他帧中的一些按钮:(