1

我将变量名存储在一个数组中,我想遍历数组并将该实例的可见属性设置为 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 中做什么?

4

2 回答 2

2

首先是的,这是可能的!

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

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

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;
        }

     }
  }
于 2012-04-20T17:17:36.630 回答
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属性。但该字符串名称的实际实例可能。

于 2012-04-20T17:12:37.563 回答