开发者

create variable from array actionscript 3

I'm currently trying to make a dynamic menu via an array and a loop. So when someone clicks on the first item of the array, "menu_bag_mc" it will link to the content "menu_bag_mc_frame" (or some name that will be unique to this array) that is another movieclip that will load. Below is the code I have so far:

//right here, i need to make a variable that I can put in the "addchild" so that
//for every one of the list items clicked, it adds a movieclip child with
//the same name (such as menu_bag_mc from above) with "_frame" appended.
//I tried the next line out, but it 开发者_开发问答doesn't really work.
var framevar:MovieClip = menuList[i] += "_frame";

function createContent(event:MouseEvent):void {
    if(MovieClip(root).currentFrame == 850) {
    while(MovieClip(root).numChildren > 1)
    {
        MovieClip(root).removeChild(MovieClip(root).getChildAt(MovieClip(root).numChildren - 1));
    }
//Here is where the variable would go, to add a child directly related
//to whichever array item was clicked (here, "framevar")
MovieClip(root).addChild (framevar);
MovieClip(root).addChild (closeBtn);
}
else {
MovieClip(root).addChild (framevar);
MovieClip(root).addChild (closeBtn);
MovieClip(root).gotoAndPlay(806);
}
} 

Is there a way to make a unique variable (whatever it is) from the array so that I can name a movieclip after it so it will load the new movieclip? Thanks


What is your "menuList" Array made up of? Strings? References to MovieClips? Or something else? I will assume it is an Array of Strings.

Remember, the addChild method takes an instance of a Class, not the name of a Class.

I am not sure I understand what you are trying to do, but I assume you are trying to make an instance of a Class that you don't really know the name of (you need to generate the name based on what button was clicked). I would probably do something like this:

var menuList:Array = ["foo1", "foo2", "foo3"];
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);

What this is doing is generating the name of the Class that you need, and storing it in the className variable. Then giving the name to getDefinitionByName which returns a Class. We then create an instance (framevar) of that class and typecast it to a MovieClip. We then add this new MovieClip to root.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜