AS3 Загрузка класса с помощью getDefinition () - PullRequest
0 голосов
/ 27 июля 2010

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

(orange1, orange2, orange3, orange4) (red1, red2, red3, red4)

Я могу загрузить swf ('index.swf') без проблем и даже могу загрузить нужный библиотечный актив, но я должен объявитьполное имя в виде строки, например, getDefinition ('orange1').Что я хотел бы сделать, это сопоставить первые три буквы строки, а затем запустить цикл for, чтобы загрузить все классы, которые соответствуют первым трем буквам.Обычно я могу сделать это, используя метод indexOf ().

Вот мой код:

public function loadContent():void
{

ldr.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler);
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, onloadHandler);
ldr.load(req);

}

public function progressHandler(eProgress:ProgressEvent):void
{
var percent:Number = (eProgress.bytesLoaded / eProgress.bytesTotal);
trace(percent);
}

public function onloadHandler(e:Event):void
{
// THIS IS WHERE I AM TRYING TO MATCH THE STRING
var str:String = "red";
str = (str.indexOf(str));
var ref1:Class = e.currentTarget.applicationDomain.getDefinition(str) as Class
trace(ref1);

}

Я был бы очень признателен за вашу помощь.

Спасибо.

1 Ответ

3 голосов
/ 27 июля 2010

Я думаю, что ваша проблема заключается в следующих строках кода:

str = (str.indexOf(str));
var ref1:Class = e.currentTarget.applicationDomain.getDefinition(str) as Class 

indexOf () возвращает индекс первого вхождения указанной подстроки или -1, если подстрока не существует. Итак, вы передаете строковое представление некоторого int (или -1, или 0, 1, 2 и т. Д.) В getDefinition () ... который, вероятно, не возвращает ссылку на класс.

Если у вас есть несколько клипов с именами red1, red2, red3, red4, я бы сделал что-то вроде следующего:

for (var i:int=0; i < 4; i++) {
     var classRef:Class = e.currentTarget.applicationDomain.getDefinition("red" + (i+1).toString()) as Class;
     trace(classRef);
}
...