![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Nov 2009
Сообщений: 5
|
День добрый. Поискал по форуму но не нашел ответ на свой вопрос:
Ситуация следующая: есть символ типа кнопка, в нем текстовое поле с заданным идентификатором. Задача в том, что текст в поле должен меняться динамически. Как получить доступ к нему? я пробовал связать кнопку с классом на as, но чтобы я не делал, вылезает ошибка, что класс не найден и будет сгенерирован, что мне совершенно не подходит. в мануале от adobe не нашел возможных причин того, почему класс не находится. файл с классом лежит в той же директории, что и fla, включен в проект. код файлика: |
|
|||||
|
Регистрация: Nov 2008
Адрес: раша, сибирь, водка, медведь
Сообщений: 8
|
package { //импортировать расширяюший класс import flash.display.SimpleButton //классы называть с большой буквы, расширяющего класса - просто имя public class TextButton extends SimpleButton { //метод-конструктор класса, вызывается автоматически public function TextButton() { //в вашей кнопке текстовое поле textField textField.text = "Просто текст" } } } |
|
|||||
|
Регистрация: Nov 2009
Сообщений: 5
|
Ок. Спасибо
![]() Проблема все равно оставалась, но разрешилась, когда я заново создал файл и заново написал в нем код... Вроде как класс он нашел. Но, когда в диалоге linkage я нажимаю зеленую галочку "подтвердить описание класса", выдается сообщение: определение класса не найдено в файле "C:\....\TextButton.as" Имя файла относительно .fla main\TextButton.as package main { import flash.display.SimpleButton; public class TextButton extends flash.display.SimpleButton { public function TextButton() { //txtClub.text = "asdasd"; } } } Подскажите, что еще я не так сделал? )и кстати, видимо по этой же причине (что flash не смог связать символ с объектом) при раскомментаривании закомментаренной строчки, при запуске компилятор ругается, что поле не объявлено - хотя в символе оно есть, и именно с таким ид. |
|
|||||
|
getChildByName
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Nov 2008
Адрес: раша, сибирь, водка, медведь
Сообщений: 8
|
Пакет можно и не обзывать, а то тогда он обязан у вас лежать в папке майн, как-то так...
а чтобы компилятор не ругался на закомменченную строчку, нужно импортировать класс для работы с текстом лучше всего, чтобы не было путаницы, создать папку Classes и туда складывать свои классы, а в свойствах документа (ActionScript3.0->Settings) прописать classpath путь к этой папке: ./Classes пакеты тогда обзывать не нужно |
|
|||||
|
Регистрация: Nov 2009
Сообщений: 5
|
небольшой апдейт: переписал код как
package main { import flash.display.SimpleButton; dynamic public class TextButton extends SimpleButton { public function TextButton() { this.txtClub.text = "asdasd"; } } } ypeError: Error #1010: A term is undefined and has no properties. at main::TextButton$iinit()[D:\..\main\TextButton.as:8] at flash.display::Sprite/flash.display:Sprite::constructChildren() Цитата:
но ошибка не исчезла. варианты:1) если написано Ругается на Undefined Property 2) Падает, потому что найти не может 3) выдает ошибку времени выполнения: Error #1006: getChildByName is not a function. |
|
|||||
|
Modus ponens
|
Отключтиь автоматическое объявление переменных для объектов добаленных на таймлайн - в настройках побликации.
Самому объявить нужную переменную (она должна быть public var с таким же именем, как и то, что вы прописали в instance name).
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Nov 2009
Сообщений: 5
|
кстати, txtClub - это просто динамический текст внутри символа "TextButton"
|
|
|||||
|
Modus ponens
|
>> выдает ошибку времени выполнения:
Error #1006: getChildByName is not a function. Ох, не обратил внимаия... SimpleButton не является DisplayObjectContainer поэтому этого метода у нее нет. Кроме того, доступа к таймлайну SimpleButton из AS3 нету, вы можете только оперировать стейтами. T.e. скорее всего ваше текстовое поле добавлено к одному из стейтов - трейсите, смотрите, куда вы его добавили ![]()
__________________
Hell is the possibility of sanity |
|
|||||
|
Зацените исходники с xml menu на simplebutton как нахождение TextFiled в simplebutton и изменение их
http://www.murmadillo.tut.su/html/xml_menu.swf http://www.murmadillo.tut.su/html/XML_MENU.rar http://www.murmadillo.tut.su/html/me...utton-href.xml и тутор небольшой то-же самое делает http://www.murmadillo.tut.su/html/me...tton-href.html должен изменит текст если он на уровне 1 в кнопке, те. над чем-то одном нарисованном private function changeLabel(sim:SimpleButton,_str:String):void{ ((sim.upState as DisplayObjectContainer).getChildAt(1) as TextField).text = _str; ((sim.downState as DisplayObjectContainer).getChildAt(1) as TextField).text = _str; ((sim.overState as DisplayObjectContainer).getChildAt(1) as TextField).text = _str; }
__________________
Гоночка Последний раз редактировалось Alex Lexcuk; 16.11.2009 в 21:12. |
![]() |
![]() |
Часовой пояс GMT +4, время: 14:37. |
|
|
« Предыдущая тема | Следующая тема » |
|
|