create variable from array actionscript 3

大城市里の小女人 提交于 2019-12-25 12:42:04

问题


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


回答1:


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.



来源:https://stackoverflow.com/questions/2906847/create-variable-from-array-actionscript-3

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!