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

Parez 06.01.2011 16:11

stage в загружаемом ролике.
 
Здравствуйте, уважаемые Flasher'ы.
Впервые попробовал загрузить одну Flash'ку в другую и столкнулся с проблемой: в загружаемой флешке я не могу обращаться к stage (выдаёт ошибку - обращение к объекту null). Что в данном случае является сценой загружаемой флешки? И как мне обращаться именно к её собственной сцене?

passertm 06.01.2011 16:16

что именно значит загрузить. вы добавили его на сцену(или в обьект который находится на сцене)????

Parez 06.01.2011 16:23

Загрузить - значит загрузить (другого слова я подобрать не могу) извне с помощью объекта класса Loader. После загрузки я добавляю объект прямо на сцену.

alatar 06.01.2011 16:30

stage появляется у всех (неважно загружены они или созданы внутри приложения) отображаемых объектов после добавления их в список отображения. До этого момента stage == null. Проверяйте событие ADDED_TO_STAGE и только после этого можете к нему обращаться.

Parez 06.01.2011 16:42

А как же сцена внутри загружаемого ролика? Я чё-то немного запутался... Я-то к сцене загружаемого ролика обращаюсь не извне, а из самого загружаемого ролика. То есть весь основной код у меня прямо в загружаемой флешке. Я к внутренней сцене этого ролика тоже не могу обращаться, пока я его не добавлю на сцену ролика загрузчика?
А сценой загружаемого ролика после загрузки станет сцена загружающего ролика?

alatar 06.01.2011 16:47

Нет никакой "внутренней" сцены. Вы скорее всего пытаетесь обратиться к stage в конструкторе. В этот момент у вашего ролика, еще нет stage, он его еще попросту не получил.
Всегда старайтесь делать так:
Код AS3:

public function Main():void //это конструктора вашего класса
{
        if (stage) init();
        else addEventListener(Event.ADDED_TO_STAGE, init);
}
 
private function init(e:Event = null):void
{
        removeEventListener(Event.ADDED_TO_STAGE, init);
        //а вот тут, можете уже обращаться к stage
}


Parez 06.01.2011 17:01

Огромное спасибо. Вроде всё получилось. И всё-таки, после загрузки внешнего ролика в главный ролик, сценой в загруженном ролике будет сцена загружающего ролика или что?

silin 06.01.2011 17:10

смотря, что называть сценой
stage - категория плеера, один для всех, в том числе и загруженных флешек
root - свой для каждой флешки, ссылка на экземпляр ее документ класса, в каком-то смысле это внутренняя сцена этого ролика

dimarik 06.01.2011 19:20

Можно ограничиться только безусловным добавлением листенера
Код AS3:

public function Main() //это конструктора вашего класса
{
        addEventListener(Event.ADDED_TO_STAGE, init);
}
 
private function init(e:Event):void
{
        removeEventListener(Event.ADDED_TO_STAGE, init);
        //а вот тут, можете уже обращаться к stage
}


Parez 06.01.2011 21:56

Всем спасибо. Всё получилось)


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

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