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.
精彩评论