![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: May 2008
Сообщений: 102
|
Начальные условия:
Есть мувик с 4мя кадрами - кнопка, а кадры это состояния - нормальное, наведенная, нажатая, залоченая в каждом кадре есть объект TextField с именем "buttonText" (получается всего 4 объекта с одинаковыми именами) для этой кнопки есть базовый класс в котором прописан переход на нужный кадр при событиях мыши. При этом базовый класс не знает ничего про объекты TextField ибо их может и не быть вообще на кнопке в базовом классе есть функция локализации этих текстовых полей: public function Translate(translation:String = ""):void { if (translation != "") buttonTranslation = translation; if ( this.hasOwnProperty("buttonText") && (this["buttonText"] is TextField) ) this["buttonText"].text = buttonTranslation; } То есть я перехожу в какой-то кадр и меняю в нем текст в текстовом поле. Проблема: в IDE работает все, а в собранной версии нет. this.hasOwnProperty("buttonText") возвращает true а по this["buttonText"] - null как правильно к этим объектам обращаться? Как вообще правильно к объектам обращаться при перемещении по кадрам? Подумал что из-за одинаковых имен проблема - поменял - в каждом кадре разные и для каждого кадра писал соответствующий кусок кода - не помогло. Заранее спасибо Последний раз редактировалось ekeeper; 30.04.2009 в 14:13. |
|
|||||
|
Регистрация: May 2008
Сообщений: 102
|
public function Translate(translation:String = ""):void { if ( this.hasOwnProperty("buttonText")) (this.getChildByName("buttonText") as TextField).text = "123"; } TypeError: Error #1009: Cannot access a property or method of a null object reference. at System::AdvancedButton/Translate() at System::AdvancedButton/onMouseOver() ![]() |
|
|||||
|
Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
|
Значит нету там buttonText.
Вообще Ваш подход не очень грамотный. Лучше вынести текстовое поле из клипа, ведь Вы его меняете программно, зачем оно в каждом кадре, пусть лежит поверх клипа. То есть, в кнопке будет 2 объекта: TextField и MovieClip, и будете ими манипулировать.
__________________
Griver |
|
|||||
|
Регистрация: May 2008
Сообщений: 102
|
Цитата:
![]() Сейчас вынесу - но - в нажатом состоянии надо двигать надпись на один пиксель вниз. Надо подумать как это лучше сделать |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
|
Цитата:
А теперь расскомментарьте строчку ниже и получите ошибку. Имя свойства есть, а значения нет. |
|
|||||
|
Регистрация: May 2008
Сообщений: 102
|
Ну проблема осталось. В 3м кадре надо сменить координаты текстового поля - а это значит отдельный кадр. Как только делаю отдельный кадр - все - достучатся до поля не могу
|
|
|||||
|
Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
|
Запомните одну вещь.
Таймлайн нужно использовать только для анимации, которую нельзя или трудоемко сделать программно. Сместить TextField, это что, трудоемко? А для анимации в серьезных проектах, иногда, не используют MovieClip, а пишут кастомный класс для покадровой растровой анимации, потому что быстрее работает.
__________________
Griver |
|
|||||
|
Регистрация: May 2008
Сообщений: 102
|
Спасибо за помощь
![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:25. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|