![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Apr 2015
Сообщений: 2
|
Можно ли как то добавить объект на сцену, имея название его класса, переданное через xml? Т.е. получил список объектов, которые нужно добавить на сцену:
и так же в библиотеке есть изображения с классами Name1, Name2, Name3. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
__________________
Reality.getBounds(this); |
|
|||||
|
Тут еще необходимо уточнить, что этот класс должен быть явно упомянут где-то в проекте, чтобы он вкомпилировался (в официальной справке плохой пример, лучше бы сделали не со встроенным классом). Иначе ничего не получится. И имя класса должно содержать полный пакет. То есть, к примеру, не Sprite, а flash.display.Sprite
|
|
|||||
|
[+1 09.05.15]
Регистрация: Jan 2015
Сообщений: 113
|
package { import flash.display.Sprite; import flash.utils.getDefinitionByName; import ILoadeClassMarker public class Main extends Sprite { public function Main() { var iLoadedAssetMarker:ILoadeClassMarker; var className:String = 'CustomClass'; var ConcreteClass:Class = getDefinitionByName(className) as Class; var instence:Object = new ConcreteClass(); trace(ConcreteClass, instence); } } } |
|
|||||
|
.
|
Вам же уже сказали, что класс физически должен быть вкомпилен во флешку.
import не даст эффекта. эффект даст строка Но, если это интерфейс, то вкомпилится только он. Класс "CustomClass" по-прежнему будет отсутствовать (не вкомпилится). |
|
|||||
|
[+1 09.05.15]
Регистрация: Jan 2015
Сообщений: 113
|
Цитата:
Добавлено через 1 минуту caseyryan, мне почему-то так больше нравится. |
|
|||||
|
.
|
Воспользуйтесь декомпилятором и проверьте. И если "CustomClass" вы явно нигде не упоминали, то его не должно быть в вашем приложении.
|
|
|||||
|
[+1 09.05.15]
Регистрация: Jan 2015
Сообщений: 113
|
Я после создания инстенса вызываю метод и вижу вывод сообщение. Это же означает что класс вкомпилировался?
package { import flash.display.Sprite; import flash.utils.describeType; import flash.utils.getDefinitionByName; public class Main extends Sprite { public function Main() { var iLoadedAssetMarker:ILoadeClassMarker; var className:String = 'CustomClass'; var ConcreteClass:Class = getDefinitionByName(className) as Class; var instence:Object = new ConcreteClass(); instence.say(); // и где-то в output - hello } } } |
|
|||||
|
.
|
Ну, получается, что так. Иначе вы получите RTE.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 03:49. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|