![]() |
|
||||||||||
|
|||||
|
Буквально недавно перелез с AS2 на AS3. Решив сразу за всё не браться оставил прелоадер на потом. И вот когда это самое "потом" наступило столкнулся с такой вот проблемой.
Есть класс Main, указанный как Document Class, который в конструкторе вызывает статический метод другого класса и в качестве параметра передаёт себя (this). В этом статическом методе используется stage только что переданного класса. Псевдокод: public class Gfx {
public static function init(clip:MovieClip) {
trace(clip.stage);
}
}
public class Main extends MovieClip {
public function Main() {
Gfx.init(this);
}
}
Прочитал статью http://etcs.ru/blog/cs3/export_in_se...ame_flash_cs3/ и взял оттуда пример, в котором Document Class - это класс прелоадера, после загрузки создающего основной класс программы. И в этом случае приведённый код не будет работать, потому что stage равен null. Как это забороть? ): Спасибо. |
|
|||||
|
Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
|
Нужно Gfx.init вызывать не в конструкторе, а когда экземпляр Main будет добавлен в DisplayList.
Для этого слушайте событие ADDED_TO_STAGE. То есть в Вашем случае так: |
|
|||||
|
Спасибо, помогло. А-то я начал было делать страшное... (:
Тема закрыта. |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:39. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| preloader , stage |
|
|