1

配列に変数名を格納していて、配列をループして、そのインスタンスのvisibleプロパティをfalseに設定したいと思います。ただし、エラーが発生します。

エラー#1056:文字列に表示されるプロパティを作成できません。

これが私のコードです:

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

     } 
  } 
} 

主な変更点は、配列内の文字列がインスタンス名であることをフラッシュに伝える必要があることです。getChildByNameそのため、ステージに追加されることを想定して使用してください。

現在のコードが失敗している理由は、文字列の表示可能なプロパティにアクセスしようとしてStringいるが、プロパティがないためvisibleです。しかし、その文字列名の実際のインスタンスはそうかもしれません。

于 2012-04-20T17:12:37.563 に答える