создать переменную из массива actioncript 3 - PullRequest
0 голосов
/ 25 мая 2010

В настоящее время я пытаюсь создать динамическое меню с помощью массива и цикла. Поэтому, когда кто-то щелкает по первому элементу массива, «menu_bag_mc», он ссылается на содержимое «menu_bag_mc_frame» (или какое-то имя, которое будет уникальным для этого массива), которое будет другим клипом, который будет загружен. Ниже приведен код, который у меня есть:

//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);
}
} 

Есть ли способ сделать уникальную переменную (какой бы она ни была) из массива, чтобы я мог назвать мувиклип после него, чтобы он загружал новый мувиклип? Спасибо

1 Ответ

0 голосов
/ 26 мая 2010

Из чего состоит ваш массив menuList? Строки? Ссылки на мувиклипы? Или что-то другое? Я предполагаю, что это массив строк.

Помните, что метод addChild берет экземпляр класса, а не имя класса.

Я не уверен, что понимаю, что вы пытаетесь сделать, но я предполагаю, что вы пытаетесь создать экземпляр класса, имя которого вы на самом деле не знаете (вам нужно сгенерировать имя, основываясь на том, какая кнопка была нажата). Я бы, наверное, сделал что-то вроде этого:

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);

То, что это делает, генерирует имя нужного вам класса и сохраняет его в переменной className. Затем присваиваем имя getDefinitionByName, которое возвращает класс. Затем мы создаем экземпляр (framevar) этого класса и передаем его в MovieClip. Затем мы добавляем этот новый мувиклип в корневой каталог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...