Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как из класса "увидеть" объекты сцены? (http://www.flasher.ru/forum/showthread.php?t=99162)

nail84 30.07.2007 13:45

Как из класса "увидеть" объекты сцены?
 
Здравствуйте... Проблема вот в чем... Я создаю класс, и мне из него надо написать что-нибудь в текстовое поле расположенное на сцене.
В AS2 это выглядело бы так:
Код:

_root.textVar='Test';
В AS3 пишу следующее:
Код:

main_report.text='Test';
не прокатывает :( ....
Пытался узнать полный путь текстового поля main_report с помощью 'parent.name' показало root1, но
Код:

root1.main_report.text='Test';
тоже не прокатывает :( ....
PS ковыряю хелп уже 1.5 часа....

etc 30.07.2007 13:46

Собственно, Document class есть рутовый класс, он и содержит в себе все текстовые поля и прочее.

Код в кадрах в AS3 не пишут.

Usnul 30.07.2007 14:42

грузить основной класс в тот из которого ты хочешь им пользоваться, например так:
Код:

public class my_class extends Sprite
{
public var _root:root_classClass;
public function my_class(root_class:root_classClass){
_root = root_class;
trace(_root.myTextField);
}

}

nail84 30.07.2007 15:01

to __etc: спасибо, но код в кадрах я не пишу.... Эт я уже усвоил Ж)
to Usnul: понял, спасибо.... а как это выглядит с точки зрения производительности?
---------------------
думаю изменю логику.... буду обращаться к объектам на сцене только Document class'ом (все объекты все равно в нем создаются)....

Usnul 30.07.2007 15:03

очень даже хорошо выглядет, обьект всеравно грузится при запуске программы, так что это всего-лишь ссылка по сути.

miramax 30.07.2007 15:06

Цитата:

Сообщение от __etc
Код в кадрах в AS3 не пишут.

Я пишу :rolleyes:

Кстати текстовые поля объявленые в кадрах инициализируются не сразу =(
Ну например нарисовал клип, назвал классом MyClip, а в нём в первом кадре текстовое поле textField.
Так вот конструкция
Код:

var clip:* = new MyClip()
trace(clip.textField)

Будет выдывать undefined, т.к. текстфилды будут доступны только в следующем кадре. Так что нужен таймаут или ентерфрейм.
Очень жаль...
ведь визуально текстфилды расставлять удобнее....

Usnul 30.07.2007 15:09

кадры - это ваше воображение, их не существует на самом деле, а раз нету кадров, то и писать в них что-либо является ересью и ловушками сатаны. Эрго: АС3 в кадрах, добропорядочные хрестиане, не пишут.

nail84 30.07.2007 15:09

ясно.... а с точки зрения стиля что правильней манипулировать объектами только из Document class'а, а из остальных классов только инфу получать, или каждым классом править объекты на сцене?

miramax 30.07.2007 15:16

Цитата:

Сообщение от Usnul
кадры - это ваше воображение, их не существует на самом деле, а раз нету кадров, то и писать в них что-либо является ересью и ловушками сатаны. Эрго: АС3 в кадрах, добропорядочные хрестиане, не пишут.

Да не, всё нормально. Надо совмещать клипы с кодом в кадрах и классовую структуру.
Есть такие задачи которые "без кадров" решать очень долго...

miramax 30.07.2007 15:24

Цитата:

Сообщение от nail84
ясно.... а с точки зрения стиля что правильней манипулировать объектами только из Document class'а, а из остальных классов только инфу получать, или каждым классом править объекты на сцене?

Document class это типа точки входа... Обычно в Document class'e кроме инициализации других объектов ничего нет.
Надо стараться поменьше оставлять "на сцене" и побольше юзать коснтрукторы. Это с опытом придёт =)

Основную структуру программы надо держать в классах.
А в кадрах удобно держать код для маленьких кирпичиков гуя находящихся "на нижнем этаже" (типа красивых кнопок, переходов и форм с тексфилдами)


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

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