Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Тип Button (http://www.flasher.ru/forum/showthread.php?t=120415)

Касеал 20.01.2009 12:50

Тип Button
 
Суть проблемы:
1. Рисую кнопку, сверху на неё кидаю текстовое поле, делаю его динамическим. Даю имя текстовому полю - txtCaption. Конвертирую рисунок кнопки и текстовое поле в символ Button, даю символу имя - btnMyButton.
2. Пытаюсь поменять значение текстового поля внутри символа, таким образом - btnMyButton.txtCaption.text = 'MyButton';

Выдаёт ошибку:
"1119: Access of possibly undefined property txtCaption through a reference with static type flash.display:SimpleButton."

Как мне получить доступ к моему текстовому полю внутри символа Button?

wvxvw 20.01.2009 13:21

getChildByName("txtCaption");
А вообще правильно - это написать класс для вашей кнопки и экспонировать свойство text вашего текстового поля через какое-нибудь свойство этого класса.

litebox 20.01.2009 14:48

А разве у класса SimpleButton есть метод getChildByName?
По логие вещей нужно делать так:
Код AS3:

(btnMyButton.upState as Sprite).getChildByName("txtCaption");

Однако при написании маленького теста таковай вариант тоже привел к ошибке, зато вариант:
Код AS3:

(btnMyButton.upState as Sprite).getChildAt(1);

возвращает текстовое поле...

Alex Lexcuk 20.01.2009 15:13

Код AS3:

var t1:TextField = (btn_1.upState as DisplayObjectContainer).getChildAt(1) as TextField;
var t2:TextField = (btn_1.downState as DisplayObjectContainer).getChildAt(1) as TextField;
var t3:TextField = (btn_1.overState as DisplayObjectContainer).getChildAt(1) as TextField;
//жирным шрифтом
t1.htmlText = t2.htmlText = t3.htmlText = "<b>Кнопка";


litebox 20.01.2009 15:41

Alex Lexcuk, это вообще не выход - при изменении дизайна кнопки кол-во детей может резко измениться и getChildAt(1) будет уже возвращать не текстовое поле. Не понятно, почему не срабатывает getChildByName("txtCaption") - куда девается имя текстового поля?

Касеал 22.01.2009 16:36

(btnMyButton.upState as Sprite).getChildByName("txtCaption") не работает, т.к. при создании кнопки, имя текстового поля, заданное на этапе разработки как, txtCaption, после компиляции, получает почему-то какое-то умалчиваемое имя, у меня например - instance85, соответственно нужен код -
(btnMyButton.upState as Sprite).getChildByName('instance85') as TextField
Вопрос - Почему меняется имя текстового поля?


Часовой пояс GMT +4, время: 13:56.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.