Форум 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=155251)

micoloss 30.04.2011 17:23

Обращение к текстовому полю внутри Button загруженной из библиотеки
 
Доброго времени суток!

Недавно начал юзать AS 3. Вопрос в следующем:
В библиотеки лежит Button с полем Dynamic Text внутри. Имя у этого поля t1.

Подгружаю эту кнопку динамически и хочу менять текст внутри кнопки.

Код AS3:

 
for (var i:int = 0; i < 9; i++) {
 
                var imageHolder:MovieClip = new MovieClip();
                var but:Button_01 = new Button_01();
                but.name = 'b' + i;
                Button_01(this.getChildByName('b' + i)).t1.text = "1";
                ...
 
}

Вообщем побывал разные способы изменения текста - пока не могу найти нужный. На все варианты с getChildByName даёт ошибку:

Код AS3:

TypeError: Error #1006: getChildByName не является функцией.

Как правильно обратится к текстовому полю?
Спасибо!

DZHETIGAPA 30.04.2011 17:44

у button есть свойство label. Обращайся к нему.

micoloss 30.04.2011 17:51

так у меня же не компонент Button a Button который типа MovieClip или Graphic (не знаю как он правильно называется). Там я вручную создал динамическое текстовое поле - как label связан с моим полем?

DZHETIGAPA 30.04.2011 17:53

Так в чем тогда сложность? Как я понимаю текст внутри кнопки это TextField. Меняй просто свойство text текстового поляи все.

micoloss 30.04.2011 17:58

не получается поменять ))
делаю так
Код AS3:

but.t1.text = "1";

говорит как будто его нет:
Код AS3:

Не удается вызвать свойство или метод со ссылкой на объект "null".

хотя в самой кнопки есть такое поле с инстансом t1. Или кроме инстанса еще нужно где ните это поле обозвать?

DZHETIGAPA 30.04.2011 18:07

ты бы лучше объяснил, что у тебя кнопка представляет, Как я понял, ты пишешь в кадрах...

Код AS3:

var but:Button_01 = new Button_01();

А ты хоть класс такой создал? Объекта как бы не существует. Потрейси but и t1 и глянь на результаты.

micoloss 30.04.2011 18:21

Вложений: 1
пример во вложении
если закомментить

Код AS3:

but.t1.text = "1";

то все будет работать

goodguy 30.04.2011 19:55

То, что там создано - это не MovieClip, а SimpleButton. Она не является потомком DisplayObjectContainer'а
соответственно и к тому, что у нее внутри, доступа нет

КорДум 30.04.2011 19:58

Ну и дополню ответом на следующий возможный вопрос: пишите свою кнопку или используйте готовые библиотеки компонентов.

micoloss 30.04.2011 20:26

Спасибо за ответы, но всё равно не понятно почему разработчики не продумали такой удобный функционал!


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

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