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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 14.12.2011, 17:25
Bazel вне форума Посмотреть профиль Отправить личное сообщение для Bazel Найти все сообщения от Bazel
  № 1  
Ответить с цитированием
Bazel
[+1 26.12.11]
[+1 11.09.11]

Регистрация: Feb 2011
Сообщений: 117
По умолчанию как обратится к stage внтури собственного класса?

Добрый день , есть собственный класс, экземпляр которого будет создан в основном классе программы.

вопрос : как обратиться к классу stage изнутри собственного класса .
при попытке зарегистрировать stage как приемник события пишет ошибку

TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at **имя пакета** ::**имя класа**/**название функции**

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

Добавлено через 2 минуты
т.е есть класс допустим
MyClass
{ ..тело класса ..
stage.addEventListener(MouseEvent.MOUSE_DOWN,function1)
}

такой код вызывает эту ошибку

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Event.ADDED_TO_STAGE для DispayObject
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 14.12.2011, 17:30
Bazel вне форума Посмотреть профиль Отправить личное сообщение для Bazel Найти все сообщения от Bazel
  № 3  
Ответить с цитированием
Bazel
[+1 26.12.11]
[+1 11.09.11]

Регистрация: Feb 2011
Сообщений: 117
т.е схематично программа так вылядит
MainClass
{
...тело класса ..
public var A: MyClass = new MyClass ;
.. тело класса ..
}

Старый 14.12.2011, 17:31
BezDelnik вне форума Посмотреть профиль Отправить личное сообщение для BezDelnik Найти все сообщения от BezDelnik
  № 4  
Ответить с цитированием
BezDelnik

Регистрация: Jul 2008
Сообщений: 80
Отправить сообщение для BezDelnik с помощью ICQ
сначала нужно дождаться когда ваш экземпляр будет добавлен к стейджу.. внутри собственного класса пишем:
Код AS3:
this.addEventListener(Event.ADDED_TO_STAGE, onAdded);
 
private function onAdded(event:Event):void {
   this.removeEventListener(Event.ADDED_TO_STAGE, onAdded);
   // и тут stage != null;
}

Старый 14.12.2011, 17:32
Bazel вне форума Посмотреть профиль Отправить личное сообщение для Bazel Найти все сообщения от Bazel
  № 5  
Ответить с цитированием
Bazel
[+1 26.12.11]
[+1 11.09.11]

Регистрация: Feb 2011
Сообщений: 117
понял, спасибо большое

Добавлено через 10 минут
все равно нулл, чето не так делаю, щас буду разбираться

Добавлено через 11 минут
сделал как сказали, в спрайте зарегил событие Event.ADDED_TO_STAGE
с функцией
внутри функцию поместил код
trace(stage) - выдает null

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

блогер
Регистрация: Feb 2010
Адрес: MSK
Сообщений: 859
Записей в блоге: 3
Отправить сообщение для Genzo с помощью ICQ Отправить сообщение для Genzo с помощью Skype™
а ваш класс вообще имеет stage? т.е. он наследуется от DisplayObject'а?
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works.

Старый 14.12.2011, 17:48
Bazel вне форума Посмотреть профиль Отправить личное сообщение для Bazel Найти все сообщения от Bazel
  № 7  
Ответить с цитированием
Bazel
[+1 26.12.11]
[+1 11.09.11]

Регистрация: Feb 2011
Сообщений: 117
ну да, наследуется от спрайта

Добавлено через 2 минуты
структура собсвенного класса
Код AS3:
MyClass extends Sprite
 { 
    public var sprite : Sprite = new Sprite ( );
    public function MyClass ( ) 
   { 
        sprite.addEventListener(Event.ADDED_TO_STAGE, onAdded) ; 
   } 
  private function onAdded(event:Event):void 
  {
   this.removeEventListener(Event.ADDED_TO_STAGE, onAdded);
    trace(stage) // выдает null ;
  }  
}


Последний раз редактировалось Bazel; 14.12.2011 в 17:58.
Старый 14.12.2011, 17:53
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 8  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Код AS3:
MyClass extends Sprite
{ 
    public function MyClass ( ) 
    { 
        addEventListener(Event.ADDED_TO_STAGE, onAdded) ; 
    } 
    private function onAdded(event:Event):void 
    {
        removeEventListener(Event.ADDED_TO_STAGE, onAdded);
        trace(stage) // выдает null ;
    }  
}
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 14.12.2011, 17:53
Bazel вне форума Посмотреть профиль Отправить личное сообщение для Bazel Найти все сообщения от Bazel
  № 9  
Ответить с цитированием
Bazel
[+1 26.12.11]
[+1 11.09.11]

Регистрация: Feb 2011
Сообщений: 117
структура всей программы
Код AS3:
MainClass extends Sprite
 { 
     public var myClass : MyClass = new MyClass ( )
     public var container : Sprite = new Sprite ( );     
  public function MainClass ( ) 
   { 
       container.addChild(myClass.sprite) ;
      stage.addChild(container) ;
 
  } 
 
}

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
У вас какой то треш.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

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

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


 


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


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