0

ここから続く:配列 actionscript 3 から変数を作成する

私は通常、それほど急いでいませんが、今夜までにこのプロジェクトを終わらせなければならないので、助けていただければ幸いです。そこのポスターは、2行目に「未定義のプロパティiへのアクセス」を取得する次のコードをくれました。リスト内のすべてのアイテムはムービー クリップであり、ライブラリには同じ名前の 2 つ目のムービークリップがありますが、それに「_frame」が追加されています (menu_bag_mc_frame)。対応する各配列アイテムがクリックされるたびに、同じ名前で末尾に _frame を追加した変数アイテムを作成します。

var menuList:Array = [menu_bag_mc,menu_chips_mc,menu_coke_mc];
var className:String = menuList[i] + "_frame";

var frameVarClass:Class = flash.utils.getDefinitionByName(className) as Class;
var framevar:MovieClip = new frameVarClass() as MovieClip;
MovieClip(root).addChild(framevar);

未定義のプロパティを取得するのはなぜですか?

4

1 に答える 1

0

そのコードには、i変数を定義しているものはありません。

アクセスするには、変数を両方とも宣言する必要があります。例えば:

var i:int;

定義された例:

i = 1;

時々これらは一緒に行われます:

var i:int = 1;

iは通常、ループ内のインデックス変数として使用されるため、次のようになります。

var menuList:Array = [menu_bag_mc,menu_chips_mc,menu_coke_mc];

for(var i:int = 0; i<menuList.length; i++)
{
    var className:String = menuList[i] + "_frame";

    var frameVarClass:Class = flash.utils.getDefinitionByName(className) as Class;
    var framevar:MovieClip = new frameVarClass() as MovieClip;
    MovieClip(root).addChild(framevar);

}

これは、forループでi変数を宣言および定義するため、コードはmenuList配列の各インデックスに対して実行されます。

編集:元のコードの意図を正しく理解している場合、配列はクラス自体ではなく文字列クラス名である必要があります。

var menuList:Array = ["menu_bag_mc","menu_chips_mc","menu_coke_mc"];
于 2010-05-26T10:31:58.680 に答える