![]() |
|
||||||||||
|
|||||
|
Регистрация: Oct 2011
Сообщений: 46
|
Чёрт, я весь на нервах. Замучали глупые непонятные нелогичные ошибки в этом проклятом AS3! Я нарисовал собственную кнопку, расширение SimpleButton. Задача до боли простая, нужно реализовать кроме самой картинки кнопки, надпись на ней по типу стандартного button.label="тралала"; Я пытаюсь это решить вставив в свой объект кнопки поверх картинки обычный textField, и потом с помощью собственного метода менять свойство text. и естесственно нихрена не получается!
package { import flash.display.SimpleButton; import flash.events.Event; public class btn extends SimpleButton { public var txt:String; public function btn() { /*if (lbl) { init(s); } else this.addEventListener(Event.ADDED_TO_STAGE,init) */ } public function setLabel(s:String){ lbl.text=s; lbl2.text=s; lbl3.text=s; } /*function init(s:String):void { lbl.text=s; lbl2.text=s; lbl3.text=s; }*/ }//end class } тут некоторое закоментировано, это я уже испробовал 10001 способ, которые все не дали никакого результата. сами кнопки я руками размещаю на сцене, задача - просто сделать надпись на них. Поначалу вообще чтото непонятное творилось, я вписывал в textField кнопки какой то текст, а при запуске программы кнопка была пустая(без текста), сам не понял что я сделал, но когда в классе кнопки я написал пару методов, стандартный текст начал появляться при запуске, но изменить его никакими способами не получается. Может есть какой то более простой способ сделать надпись на моей кнопке? но желательно конечно сделать так, как я задумал, но ПОЧЕМУ не получается то ? Последний раз редактировалось noobuser; 12.11.2011 в 19:17. |
|
|||||
|
а что покажет trace(lbl);
у вас же эти TextField находятся как я понял, в разных кадрах? вот он и будет null, вероятнее всего Их нужно именно три штуки? или достаточно одного?
__________________
adobe AS3 manual |
|
|||||
|
Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
|
Выкиньте SimpleButton в мусорку. Наследуйте свою кнопку от Sprite.
|
|
|||||
|
Регистрация: Oct 2011
Сообщений: 46
|
да, они находятся в разных кадрах. lbl - в кадре UP, lbl2 - OVER, lbl3 - DOWN. Не обязательно 3 штуки. Просто в каждом кадре у этих текстовых полей разные стили и координаты. я иду по пути наименьшего сопротивления и что бы минимизировать кол-во строк кода максимум делаю на сцене. т.е. я не хочу писать лишних 20 строк что бы задавать стили для текста на кнопке для всех положений кнопки. поэтому я создать заранее 3 поля с разными стилями, задача просто поменять текст в этих полях. И поэтому я пока что хочу сделать всё при помощь SimpleButton а не Sprite, что бы было минимум кода. использование MovieClip и Sprite это уже самый последний безвыходный вариант.
|
|
|||||
|
Вы мне, а в результате и себе - так и не ответили:
Цитата:
пробуйте так: [IMG]http://i28.***********/big/2011/1112/ed/37b28f0b984fe226089de0f79441eeed.png[/IMG] Добавлено через 3 минуты Если вам и так не устроит, тогда Bgg дело говорит, Sprite будет получше.
__________________
adobe AS3 manual Последний раз редактировалось strangedk; 12.11.2011 в 19:38. |
|
|||||
|
Регистрация: Oct 2011
Сообщений: 46
|
да, trace(lbl) выдаёт null. но в тоже время я не понимаю почему не работает эта конструкция
которая по идее должна дожидаться инициализации |
|
|||||
|
Потому что иницализации не будет.
это кадры. А кадры зло. Какой результат, если сделать текст одним кадром. Как на картинке выше?
__________________
adobe AS3 manual |
|
|||||
|
Регистрация: Oct 2011
Сообщений: 46
|
теперь он ругается Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
|
|
|||||
|
а я надеюсь имя instance вы указали?
вообще, снова же. Разбираемся в догадках. Дайте код, там и посмотрим.
__________________
adobe AS3 manual |
|
|||||
|
Регистрация: Oct 2011
Сообщений: 46
|
да, указал.
package { import flash.display.SimpleButton; import flash.events.Event; public class btn extends SimpleButton { public function btn() { } public function setLabel(s:String){ if (lbl) { trace("существует"); init(s); } else { trace("не сщуствует"); this.addEventListener(Event.ADDED_TO_STAGE,init) } } function init(s:String):void { lbl.text=s; } }//end class } |
![]() |
![]() |
Часовой пояс GMT +4, время: 11:15. |
|
|
« Предыдущая тема | Следующая тема » |
|
|