循环遍历数组并设置实例的可见属性 - ActionScript3

时间:2012-04-20 17:04:22

标签: arrays actionscript-3 variables

我有一个存储在数组中的变量名,我想循环遍历数组并将该实例的visible属性设置为false。但是,我收到了错误;

  

错误#1056:无法在String上创建可见属性。

这是我的代码:

package  {
    import flash.events.TouchEvent;
    import flash.ui.Multitouch;
    import flash.ui.MultitouchInputMode;
    import flash.display.MovieClip;
    import flash.events.MouseEvent;

    public class touch extends MovieClip
    {
        public function touch()
        {
            var menuitems:Array = new Array("menu_One", "menu_Two", "menu_Three", "menu_Three", "menu_Four", "menu_Five");//array with instance names
            for(var i:int=0;i<6;i++){
                var tempName = menuitems[i];
                bsF_txt.text = tempName;
                trace(tempName);
                tempName.visible = false;
                //menu_One.visible = false;
            }

         }
      }
}

时。我想在AS3做什么?

2 个答案:

答案 0 :(得分:2)

首先是的,这是可能的!

问题是你循环遍历一个字符串数组,而不是变量或任何引用DisplayObject的东西(在你的情况下可能是一个MovieClip?)

假设这些字符串是您舞台上的MovieClip的实例名称或引用它们的vars,您可以尝试这样的事情:

public function touch()
    {
        var menuitems:Array = new Array(menu_One, menu_Two, menu_Three, menu_Three, "menu_Four", menu_Five);//if this gives you an error please paste some more code because these are not instance names or vars
        for(var i:int=0; i<menuitems.length ;i++){ //you don't need to explicitly use 6 here you can check the menuitems arrays length 
            var tempName = menuitems[i]; //note, this is not needed
            bsF_txt.text = tempName.name; //I think you're looking for this?
            trace(tempName);
            tempName.visible = false;
            //menu_One.visible = false;
        }

     }
  }

答案 1 :(得分:1)

尝试使用以下代码(我刚注意到你说这些是实例名称......)

package  { 
import flash.events.TouchEvent; 
import flash.ui.Multitouch; 
import flash.ui.MultitouchInputMode; 
import flash.display.MovieClip; 
import flash.events.MouseEvent; 

public class touch extends MovieClip 
{ 
    public function touch() 
    { 
        var menuitems:Array = new Array("menu_One", "menu_Two", "menu_Three", "menu_Three", "menu_Four", "menu_Five");//array with instance names 
        for(var i:int=0;i<6;i++){ 
            var tempName = menuitems[i]; 
            bsF_txt.text = tempName; 
            trace(tempName); 
            getChildByName(tempName).visible = false; 
            //menu_One.visible = false; 
        } 

     } 
  } 
} 

主要的变化是你需要告诉flash你的数组中的字符串是一个实例名称。因此,假设它们已添加到舞台中,请使用getChildByName

您当前代码失败的原因是您尝试访问String上的visible属性,但String没有visible属性。但该字符串名称的实际实例可能是。