2012-02-18 2 views
1

Я пытаюсь инициализировать класс на основе конкатенации строки и числа. Все мои классы общедоступны.Инициирование динамического класса AS3

Это мой код:

public function setCurrentPath(pathNumber:String) 
    { 
     var pth_class:Class = getDefinitionByName('Pth'+pathNumber) as Class; 
     var pth:MovieClip = new pth_class(); 
     addChild(pth) 
     pth.getXY(); 


    } 

Так I'm получаю Error # 1065.

Любая помощь?

Да у меня на моем импорте файлов flash.utils класса. *

+0

Я думаю, что я получаю сообщение об ошибке в 'var pth_class: Class = getDefinitionByName (' Pth '+ pathNumber) как Class;' Да ко всем вопросам –

+0

если я трассирую («Pth» + pathNumber), я получаю «Pth1», это строка не класса –

ответ

2

Является ли ваша pth_class переменной нуль?

Если это так, есть несколько причин, это может быть:

1) Вы не вводите правильный полное имя класса вашего класса. Например com.myClasses.Pth1

или

2)

Если вы instanciating классы динамически, как это и нет никакой другой «обычный» ссылка на класс (например, бла = новый Pth1 ()), то класс «Pth1» не будет включен в процесс компиляции.

Чтобы обойти эту проблему, я думаю, что вы можете поставить аргументы компилятора, чтобы заставить его скомпилировать эти классы или вы можете вручную включать ссылки на них в существующем коде:

p1:Pth1; 
p2:Pth2; 
+0

. Не работает –

+1

, если я использую trace (getDefinitionByName («Pth1»)) Я получаю «Pth1» " Класс. если я использую trace (getDefinitionByName ("Pth" + pathNumber)) Я получаю ошибку. Я передаю строку '1' в pathNumber. –

+0

Я понял, что аргумент должен быть числом, а не строкой. Поэтому я передавал «1» для pathNumber (строка), поэтому я преобразовал в число и работает :). –

Смежные вопросы