Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.09.2008, 17:34
elmortem вне форума Посмотреть профиль Отправить личное сообщение для elmortem Посетить домашнюю страницу elmortem Найти все сообщения от elmortem
  № 1  
Ответить с цитированием
elmortem
 
Аватар для elmortem

Регистрация: Sep 2008
Адрес: Terra
Сообщений: 64
Отправить сообщение для elmortem с помощью Skype™
По умолчанию Снова прелоадер

Буквально недавно перелез с 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);
  }
}
Всё отлично работает, stage на месте. Но нету прелоадера.
Прочитал статью http://etcs.ru/blog/cs3/export_in_se...ame_flash_cs3/ и взял оттуда пример, в котором Document Class - это класс прелоадера, после загрузки создающего основной класс программы.
И в этом случае приведённый код не будет работать, потому что stage равен null.
Как это забороть? ):
Спасибо.

Старый 26.09.2008, 17:54
mre вне форума Посмотреть профиль Отправить личное сообщение для mre Посетить домашнюю страницу mre Найти все сообщения от mre
  № 2  
Ответить с цитированием
mre
 
Аватар для mre

Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
Нужно Gfx.init вызывать не в конструкторе, а когда экземпляр Main будет добавлен в DisplayList.
Для этого слушайте событие ADDED_TO_STAGE.

То есть в Вашем случае так:
Код:
public class Main extends MovieClip 
{
    public function Main() 
    {
        super();
        this.addEventListener(Event.ADDED_TO_STAGE, addedHandler);
    }

    private function addedHandler(event:Event):void
    {
        Gfx.init(this);
    }
}

Старый 26.09.2008, 18:21
elmortem вне форума Посмотреть профиль Отправить личное сообщение для elmortem Посетить домашнюю страницу elmortem Найти все сообщения от elmortem
  № 3  
Ответить с цитированием
elmortem
 
Аватар для elmortem

Регистрация: Sep 2008
Адрес: Terra
Сообщений: 64
Отправить сообщение для elmortem с помощью Skype™
Спасибо, помогло. А-то я начал было делать страшное... (:
Тема закрыта.

Создать новую тему Ответ Часовой пояс GMT +4, время: 18:34.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
preloader , stage
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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