![]() |
|
||||||||||
|
|||||
|
Регистрация: Jul 2009
Сообщений: 95
|
Здравствуйте. Объясните пожалуйста мне, тупице, следующие вопросы.
1. Предположим, у меня имеется некий SimpleButton, зашитый в FLA и с линкованный через Linkage. Вот как я их создаю(упрощенно): var newButton:SimpleButton = new MyButton();//Создаемся var copyButton:SimpleButton = new (Object(newButton)).constructor();//Клонируем. 2. Я наткнулся на то, что мне нужно загружать кнопки извне. Я стал загружать спрайты и записывайть их в стейты, вот так: все ок, все шуршит и пашит. Но потом мне эти кнопке также понадобилось клонировать. К сожалению, первый вариант уже не катит, поскольку во втором случае уже используется не MyButton, описанный в FLA, а базовый SimpleButton и он не знает изначально, что у него внутри. Поставил вот такой костыль: copy.upState = new (Object(myButton.upState)).constructor() Гы. Работает. Но первый вариант перестал работать с этой строчкой. Стал рыться в отладчике. Может ещё что-нибудь сетать надо? Смотрю, у copy.upState есть свойство parent, равное самому myButton(т.е. хозяин у контрола остался тот же) 3. Я фшоке. Какие образом просетать в это поле(parent), если оно read-only, да ещё плюс к тому SimpleButton не является контейнером! Что вы думаете по всему вышеописанному. |
|
|||||
|
strange mood
|
Я думаю, что вы занимаетесь не тем, ибо прототипирование - это пережитки AS1, а в AS3 все визуальные объекты создаются по-нормальному, а не клонированием. Именно потому, что попытка клонирования вызывает проблемы, которые вы здесь описываете.
__________________
тонкий тролль, осеянный благодатью |
|
|||||
|
Регистрация: Jul 2009
Сообщений: 95
|
у меня нет прототипирования. у меня создаются все объекты через рефлексию вообще через getDefinitionByName.
Вот пример описания контрола: <BankChestStrokeEvidence type="com.awem.visual.control.standart.impl.Image" owner="BankChest" resource="BankBandannaStrokeRes" x="25" y="3"/> |
|
|||||
|
.
|
А это тогда... ммм к чему? Кривое "клонирование" через анус.
var copyButton:SimpleButton = SimpleButton( new Object(newButton).constructor );// Вот клонируем, а не машем правой рукой. Всю визуальную составляющую так не склонируете. getDefinition и далее по рефлексии. Последний раз редактировалось dimarik; 20.04.2010 в 02:45. |
|
|||||
|
Регистрация: Jul 2009
Сообщений: 95
|
К вашему сведению - getDefinitionByName и new (Object(newButton)).constructor()
работают по одному принципу. Второй пример работает гораздо быстрее, поскольку отсуствуют затраты на получение полного имени ресурса. "Всю визуальную составляющую так не склонируете." Ошибаетесь. Класс полностью воссоздает начальное состояние картинки. Хотя это я тут немного неправильно написал. Это, скорее, не клонирование текущего состояния объекта, а клонирование его начального состояния, описанного в FLA. Добавлено через 4 минуты var copyButton:SimpleButton = SimpleButton( new Object(newButton).constructor ) Ну и на кой ляд мне делать лишнее преобразование к SimpleButton, когда я могу вызвать напрямую конструктор, возвращающий SimpleButton?! |
|
|||||
|
Ого, конструкторы уже возвращают что-то.. )
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
.
|
Надо тестить, Тигра. Вдруг что вернут.
2 tofflife Фраза "Всю визуальную ....". Означала, что кроме шейпов, созданных в authority-mode, в DisplayObject/DisplayObjectContainer могут быть и детки по-серьезнее. Добавлено через 1 минуту Ах, да! Я приму это к сведению, спасибо )) |
|
|||||
var tmp1:TestClass = new TestClass(); var tc:TestClass = tmp1["constructor"] as TestClass; trace(tc); var func:Function = tmp1["constructor"] as Function; trace(func); trace(tmp1["constructor"]); null [class TestClass] Это не функция/метод и не класс. Судя по всему, это геттер, и что-то он возвращает. Похоже был не прав по поводу того, что конструктор ничего не возвращает...
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
strange mood
|
Риальне... Накинулись на человека, а он прав оказался, хоть и по-извратски)
__________________
тонкий тролль, осеянный благодатью |
|
|||||
|
Ну, конструктор по идее ничего возвращать и не должен - не это у него предназначение. Конструктор определяется как метод, в общем то говоря - а я вверху показал что это геттер. Значит, по сути дела конструктор класса и object.constructor это разные вещи. И вот object.constuctor что-то возвращает - судя по всему, экземпляр класса или сам класс
//object Но я почти уверен, что автор говоря о конструкторе имел ввиду именно тот самый конструктор, что метод.
__________________
Тут мужик танцует и поёт про флэш |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:37. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|