динамически добавлять детей из библиотеки, используя массив - PullRequest
0 голосов
/ 01 февраля 2010

Я портирую старый проект AS2 на AS3 и столкнулся с проблемой. Я пробовал несколько разных вещей, но безуспешно.

в AS2 при динамическом подключении MC из библиотеки я иногда использовал массив. массив будет содержать ссылки на ссылки, вот так;

var mc:String = state_ar[currentState];
this.container.attachMovie(mc,mc,this.getNextHighestDepth());
targetMC = this.container[mc];

Как бы я сделал это в AS3?

Ответы [ 3 ]

2 голосов
/ 01 февраля 2010

Это можно сделать с помощью getDefinition () или getDefinitionByName ()

Проверьте этот ответ для кода , ваша ситуация звучит очень похоже.

Примечание: Единственное отличие в том, что вы можете использовать мувиклипы, а не изображения, поэтому вам не понадобится 0,0 аргументов в конструкторе.

1 голос
/ 01 февраля 2010

Ответ;

var mc:String = state_ar[currentState];
var classReference:Class = getDefinitionByName(mc) as Class;
var tempMC:Object = new classReference();
this.container.addChild(tempMC)

Спасибо, Джордж

1 голос
/ 01 февраля 2010

Я не совсем уверен, если это то, что вы спрашиваете, но я сделаю это.

//New array to store Movie Clips references    
var myArray:Array = new Array();
//Create a movie clip
var movieClip:MovieClip = new MovieClip();
//Add it to the array for reference
myArray.push(movieClip);
//Put it on the stage
this.addChild(movieClip);

Вы по-прежнему можете использовать массивы для хранения ссылок на объект, и вы можете ссылаться на них напрямую.


В as3 MovieClips в библиотеке будет иметь имя класса, поэтому, если у вас есть MC в библиотеке с именем MyMovie, вы бы добавили его в as3 с помощью:

var myMovie:MyMovie = new MyMovie();
addChild(myMovie);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...