![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Mar 2006
Сообщений: 17
|
По всем руководствам AS3 не рекомендуют писать код прям во флеше, а в .as - файле.
Пытаюсь себе переучить так, но вот на самом старте у меня не получается мелочь, которая держит дальнейшее развитие. Задача такая, у меня на сцене есть текстовое поле dynamic типа, которое вставлено через графический интерфейс, а не программно. Так вот как мне к такому полю обращаться из разных классов в файлах .as? Получилось напрямую только из основного класса обратиться, а этого не достаточно. Прошу помощи. |
|
|||||
|
Регистрация: Feb 2010
Сообщений: 95
|
Где sprite - контейнер текстового поля, name - instance name (задается в Flash CSx).
|
|
|||||
|
Регистрация: Mar 2006
Сообщений: 17
|
Спасибо, но вот на счёт sprite не понял. Если у меня лежит просто на главной сцене - это root, чтоли?
|
|
|||||
|
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
да, root
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
|
Регистрация: Mar 2006
Сообщений: 17
|
Не получилось.
Основной файл: package { import flash.display.*; public class Main extends Sprite { public function Main() { Message("text"); } } } package { import flash.text.TextField; public function Message(t:String):void{ var d:TextField = getChildByName("text_field") as TextField; d.text = t; } } 1120: Access of undefined property root. Если убрать root, то выдаёт: 1180: Call to a possibly undefined method getChildByName. Подскажите как правильно. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Навряд ли у функции Message есть дети, родители, контейнеры, стейджы, руты
Это же не дисплейный объект.Если уж так сильно хочется заморочиться такой глобальной функцией, ей надо как-то передать ссылку на текстовое поле. Или "положить" эту ссылку в такое место, где функция сможет ее взять. Например, сделать в Main-классе статический геттер, возвращающий ссылку на текстовое поле, и импортировать класс Main в ваш пакет с функцией. package { import flash.display.Sprite; import flash.text.TextField; public class Main extends Sprite { private static var _txf:TextField; public function Main() { _txf = getChildByName("text_field") as TextField; message("text"); } public static function get txf():TextField { return _txf; } } }
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 03.10.2010 в 15:56. |
|
|||||
|
Регистрация: Mar 2006
Сообщений: 17
|
да это из-за постоянного переписывания кода, до этого это был метод класса Message
![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 09:56. |
|
|
« Предыдущая тема | Следующая тема » |
|
|