AS3 Доступ к экземпляру Monostate является нулевым

У меня есть экземпляр Main, к которому я должен иметь доступ в любом месте. Если я хочу получить доступ к переменной на уровне, я должен быть в состоянии сделать:

_root.level.my_value

Тем не менее,.level показывает ноль, когда я вызываю _root.level на моей карте.

Main.as (Классный документ)

package{
  import flash.display.MovieClip;
  public class Main extends MovieClip{

  //Monostate
  private static var _instance:Main;
  public static function get instance():Main { return _instance; }

  public var level:MovieClip;

  public function Main(){
    _instance = this; //Monostate
    this.level = new Level();
  }
}} //package / class

Level.as

package{
  import flash.display.MovieClip;
  public class Map extends MovieClip{

  private var _root:MovieClip;

  public function Map(){
    _root = Main.instance
    trace(_root);
    trace(_root.level); //This should not be null
  }
}} //package / class

1 ответ

Вы никогда не создаете свой экземпляр _instance, так level никогда не устанавливается.

Ваш статический геттер, вероятно, должен выглядеть примерно так:

public static get instance():Main {
    if(!_instance){
        _instance = new Main();
    }
    return _instance;
}
Другие вопросы по тегам