代码之家  ›  专栏  ›  技术社区  ›  anon255058

在数组中使用实例名称,#1010错误,as3

  •  1
  • anon255058  · 技术社区  · 16 年前

    我想在数组中使用实例,但得到一个错误。如何在数组中使用实例?谢谢。

    错误1010'术语未定义且没有属性'

    //I'm trying to make two array objects disappear
    var pink:Array = ["boxInstance1","boxInstance2"];
    /*
    THIS WORKS
    boxInstance1.visible = false;
    boxInstance2.visible = false;
    */
    //THIS DON'T 'or with one instance in the array it works'
    this[pink].visible = false;
    
    3 回复  |  直到 16 年前
        1
  •  1
  •   Amarghosh    16 年前

    对于数组中的一个实例,flash将数组转换为字符串,然后 boxInstance1 作为价值;具有多个值的数组转换为 boxInstance1,boxInstance2 (可能)因此错误。使用正确索引处的值 []

    this[pink[0]].visible = false;
    //equivalent to
    boxInstance1.visible = false; 
    
    this[pink[1]].visible = false;
    //equivalent to
    boxInstance2.visible = false; 
    

    for(var i:Number = 0; i < pink.length; i++)
      this[pink[i]].visible = false;
    
        2
  •  0
  •   Ender    16 年前

    或者:

    var pink:Array = [this.boxInstance1, this.boxInstance2];
    for each(var box:Sprite in pink)
        box.visible = false;
    
        3
  •  0
  •   Mike Moore    16 年前

    你需要使用 getChildByName() :

    var mc:MovieClip = new MovieClip();
    mc = getChildByName(pink[0]);
    mc.visible = false;
    
    mc = getChildByName(pink[1]);
    mc.visible = false;
    

    如果要对所有实例执行某些操作,请使用for循环:

    var mc:MovieClip;
    for(var i:int = 0; i < pink.length; i++)
    {
        mc = MovieClip(getChildByName(pink[i]));
        mc.visible = false;
    }