![]() |
|
||||||||||
|
|||||
|
Регистрация: Oct 2006
Сообщений: 2,283
|
dimarik,предложи свой вариант этого кода:
var cl:*= getDefinitionByName(linkage_id); if (cl is Class) { view = new cl() as DisplayObject; addChild(view); } Добавлено через 6 минут Цитата:
|
|
|||||
|
.
|
Что же самое страшное в твоем примере? Например, у меня есть MyObject extednds DisplayObject (на самом деле extends DisplayObject нельзя, можно от других наследников DisplayObject). А вот в нем объявлен метод, например, moveTo(x, y). Такого метода, конечно, нет у DisplayObject и конструкция типа
Вызовет при компиляции справедливый Error: нет такого метода у объекта с типом DisplayObject. Что же, нам придется либо кастовать view к MyObject с проверкой результата приведения на null, либо... сама суть такого инстанцирования неправильна. Твой пример показывает скорее всего то, как еще можно сделать, в обход проверки типизации в compile time. Такие случаи бывают, да. Например, ну, никак нельзя допустить вкомпиливания кода со всеми зависимостями в прелоадер. Тогда мы можем так поступить. И это осознанный шаг. |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 2,283
|
ну так на то оно и view - голое визуальное представление, стандартного DisplayObject вполне достаточно.
Добавлено через 2 минуты Вообще эта конструкция для простого связывания графики из библиотеки с пользовательскими классами.Для новичка большего и не нужно имхо. |
|
|||||
|
.
|
Цитата:
this.addEventListener(IOErrorEvent.IO_ERROR, this.handler_error); this.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.handler_error); private function handler_error(event:ErrorEvent):void { trace(this, "handler_error", event); } Цитата:
А вот если к символу более сложный чем MоvieClip, класс привязан? Как вы будете управлять экземпляром? То-то же ) |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 2,283
|
Цитата:
Цитата:
Добавлено через 9 минут Цитата:
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Вообще, эта тема с
она же для того, чтобы вычитать в XML название класса для создания какой-нибудь финтифлюшки. И понятно, что тут зарыта куча подводных камней, как всегда бывает при String-typed вместо Strong-typed. Опечатки, кодировки, заглавные/прописные, дефисы/подчеркивания и просто невнимательность, в результате которой объявленного в XML класса не оказывается в скомпилированной библиотеке. Эти проблемы практически нерешаемы со 100% гарантией (хотя от всех каллиграфических проблем можно избавиться, используя числовые id вместо названий классов, а названия сопоставить id во "внутреннем" реестре классов). Но вот избавиться от String-typed не так уж сложно обычным свитчем, где по значению строки linkage_id выдается ссылка на настоящий, 100% вкомпилированный Класс.
Ну, типа var className:String = linkage_id.toUppercase(); switch (className) { case "CIRCLE" : _view = new Circle(); break; case "RECTANGLE" : _view = new Rectangle(); break; case "TRIANGLE" : _view = new Triangle(); break; case "ELLIPSE" : _view = new Ellipse(); break; default : _view = new LostPicSample(); }
__________________
Reality.getBounds(this); |
|
|||||
|
[+4 06.05.14]
|
undefined ваша структура
от плохой реализации. Приведите мне четкий пример, когда вообще мне нужно использовать getDefinitionByName ?
__________________
Марк Tween Последний раз редактировалось dimarik; 22.09.2016 в 21:34. Причина: форматирование кода |
|
|||||
|
Цитата:
Делаешь ты, к примеру, игру. В редакторе локаций добавляешь персонажей или объекты, которые в игре представлены определенными классами. Сама локация сохраняется в XML или в JSON, со строчным представлением всех классов персонажей и объектов и их настройками. Чтобы потом этих персонажей в игре воссоздать в нужном месте, как раз и используется getDefinitionByName(). Можно конечно их пронумеровать в игре, или приписать им какое-то название, по которому их находить. Но чем эта реализация лучше?
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 20:26. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| классы , ООП |
|
|