0

从这里继续:从数组 actionscript 3 创建变量

我通常不会这么着急,但我必须在今晚之前完成这个项目......所以任何帮助表示赞赏。那里的海报给了我以下代码,它在第二行获得“未定义属性 i 的访问”。列表中的所有项目都是影片剪辑,我在库中有第二个同名的影片剪辑,但附加了“_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 回答