AS3 экземпляр класса доступа отовсюду - PullRequest
0 голосов
/ 29 декабря 2011

для моего текущего проекта я начинаю работать с AS3, и я написал класс ClipManager, в котором я могу определить MC как "mainView" во время инициализации следующим образом:

clipManager:ClipManager = new ClipManager(mainView);

С моим clipManager я могутеперь легко загружать вещи в mainView и т. д. Проблема в том, что я хочу, чтобы каждая кнопка на всем протяжении всего этого обращалась к методам класса этого экземпляра, чтобы изменить mainView.Могу ли я иметь что-то вроде глобального экземпляра Class во Flash или есть какой-нибудь более умный способ достичь того, что я пытаюсь сделать?

1 Ответ

3 голосов
/ 29 декабря 2011

Вы можете либо добавить свой класс ClipManager в качестве статического объекта, то есть божественного объекта (возможно, вашего основного класса), и получить к нему доступ через него, либо использовать шаблон Singleton .

Распространенный способ реализовать его в as3:

public class Singleton
{
    private static m_instance:Singleton = null; // the only instance of this class
    private static m_creating:Boolean   = false;// are we creating the singleton?

    /**
     * Returns the only Singleton instance
     */
    public static function get instance():Singleton
    {
        if( Singleton.m_instance == null )
        {
            Singleton.m_creating    = true;
            Singleton.m_instance    = new Singleton;
            Singleton.m_creating    = false;
        }
        return Singleton.m_instance;
    }

    /**
     * Creates a new Singleton. Don't call this directly - use the 'instance' property
     */
    public function Singleton()
    {
        if( !Singleton.m_creating )
            throw new Error( "The Singleton class can't be created directly - use the static 'instance' property instead" );
    }
}

Теперь, чтобы получить доступ к вашему классу, вы звоните Singleton.instance. Там будет только один экземпляр этого класса.

Что касается анти-паттернов и т. Д., Это еще один пост:)

...