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

Bazel 14.12.2011 17:25

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

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

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

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

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

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

GBee 14.12.2011 17:30

Event.ADDED_TO_STAGE для DispayObject

Bazel 14.12.2011 17:30

т.е схематично программа так вылядит
MainClass
{
...тело класса ..
public var A: MyClass = new MyClass ;
.. тело класса ..
}

BezDelnik 14.12.2011 17:31

сначала нужно дождаться когда ваш экземпляр будет добавлен к стейджу.. внутри собственного класса пишем:
Код AS3:

this.addEventListener(Event.ADDED_TO_STAGE, onAdded);
 
private function onAdded(event:Event):void {
  this.removeEventListener(Event.ADDED_TO_STAGE, onAdded);
  // и тут stage != null;
}


Bazel 14.12.2011 17:32

понял, спасибо большое

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

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

Genzo 14.12.2011 17:46

а ваш класс вообще имеет stage? т.е. он наследуется от DisplayObject'а?

Bazel 14.12.2011 17:48

ну да, наследуется от спрайта

Добавлено через 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 ;
  } 
}


GBee 14.12.2011 17:53

Код 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 ;
    } 
}


Bazel 14.12.2011 17:53

структура всей программы
Код 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) ;
 
  }
 
}


GBee 14.12.2011 17:54

У вас какой то треш.


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

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