Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Stage в классах (http://www.flasher.ru/forum/showthread.php?t=177822)

Halfist 09.04.2012 18:01

Stage в классах
 
Объект stage не виден внутри внешних классов (*.as файлы). Как при помощи import дать классу понять, что это такое?
В импорте написано:
Код AS3:

import flash.display.*;

Судя по документации, stage лежит внутри flash.display. Этого мало?

P.S.: Если писать не somePalce.addChild(...), а просто addChild(...), куда Flash "положит" объект?

DaFive 09.04.2012 18:05

Передать ссылку, как вариант.
Флеш положит объект внутрь того объекта, который вызовет метод addChild.

Inet_PC 09.04.2012 18:06

Просто нужно слушать событие Event.ADDED_TO_STAGE, тогда стейдж будет доступен. Еще возможно стейдж не виден, если Вы не наследуетесь от DisplayObject. В общем лучше выложите кусочек кода. Зачем гадать?

DaFive 09.04.2012 18:08

Ну это если сам экземпляр добавляется на stage.

Halfist 09.04.2012 18:12

К примеру, метод становится нерабочим, если в нём написать следующее:
Код AS3:

mySuperObject.x = (stage.width / 2);

Это учитывая, что внутри класса есть строка:
Код AS3:

import flash.display.*;


gloomyBrain 09.04.2012 18:19

Наличие строки с импортом вовсе не значит, что объект stage доступен.
Импорт нужен для того, чтобы подсказать компилятору какой именно класс Stage вы используете - из пакета flash.display.
Вам никто не мешает написать свой класс Stage и положить его в другой пакет. Тогда прописав другой импорт вы сможете использовать свой класс.

illuzor 09.04.2012 18:20

Halfist, ну не виден stage, если экземпляр не добавден на сцену.
Цитата:

Просто нужно слушать событие Event.ADDED_TO_STAGE
Или передавайте ссылку на stage в конструктор.
От чего вообще ваш класс наследуется?

DaFive 09.04.2012 18:21

У вас не будет доступна ссылка на stage, хоть вы 10 импортов сделайте, если вы не добавили экземпляр на сцену или не передали ссылку на нужный стейдж экземпляру класса.

Halfist 09.04.2012 18:59

Класс наследуется от MovieClip. Как передать ссылку на stage в конструктор?

bav 09.04.2012 19:05

Как-то так:
Код AS3:

package {
 
        import flash.display.*;
        public class MyClass extends MovieClip {
 
                public function MyClass(s:Stage) {
                        trace("Here is my " + s);
                }
        }
}


Halfist 09.04.2012 19:07

А addChild() по-умолчанию "лепит" объект на stage?

Inet_PC 09.04.2012 19:08

нет, на себя

bav 09.04.2012 19:09

Код AS3:

addChild( someChild );
// равносильно
this.addChild( someChild );


Vishapakahr 09.04.2012 20:42

В основном классе приложения даем (Main)
Код AS3:

public static var stg:Stage;

В addedtostage даем
Код AS3:

stg = stage;

А далее в любом классе можно получить ссылку через Main.stg. А если еще недоступен , то можно еше и давать ссылку на экземпляр Main и слушать addedtostage но .. я бы избежал от такого рода применений.


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

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