代码之家  ›  专栏  ›  技术社区  ›  Peter Bailey

MovieClip.getChildByName()的AS2版本?

  •  0
  • Peter Bailey  · 技术社区  · 17 年前

    在这个小的Flash8/AS2项目中,我试图对我的“DOM”引用负责。

    var b:Button = _level0.instance4.submitBtn;
    

    我希望AS2有一种类似于AS3的实例检索方法 MovieClip.getChildByName() 甚至Javascript的 document.getElementById() instance4 在上面)只是觉得真的,真的很脏。

    但是,我现在找不到这种东西 this AS2 Reference .

    3 回复  |  直到 17 年前
        1
  •  1
  •   moritzstefaner    17 年前

    如果MovieClip放在flashide中的stage上,您可以在属性面板中为它指定一个正确的实例名称。

    如果是动态添加的,还可以为其命名,并另外存储引用:

    var my_MC=createEmptyMovieClip("instanceName", depth);
    

    在任何一种情况下,你都可以用 _parentClip.instanceName my_MC.

        2
  •  1
  •   user36432    17 年前

    var b:Button = _root.instance4.submitBtn;
    

    在数组表示法中如下所示:

    var b:Button = _root["instance4"].submitBtn;
    

    因此,如果您想在已经创建的100个按钮之间循环,并将alpha设置为0:

    for( var i:Number = 0; i < 101; i++)
    {
         var button:Button = _root["instance"+i].submitBtn;
         button._alpha = 0;
    }
    

        3
  •  0
  •   Luke    17 年前

    您可以自己编写(代码未经测试,但您已经有了想法):

    MovieClip.prototype.getElementByName = function(name : String) : Object
    {
        var s : String;
        var mc : Movieclip = null;
    
        for( s in this )
        {
            if( this[s] instanceof MovieClip )
            {
                if( s == name )
                {
                    mc = this[ s ];
                    break;
                }
    
                mc = this[s].getElementByName( name );
            }
        }
    
        return( mc );
    }
    
    推荐文章