'SuperGlobal' ООП переменные для actioncript? - PullRequest
0 голосов
/ 24 ноября 2010

Я проектирую флеш-сайт и сделал его объектно-ориентированным.У меня много классов, и мне трудно получить доступ к информации (переменным) из других классов.

Для этого я обычно включаю переменную в параметры функций моего класса (или конструктора) ИЛИ я создаю пользовательские объекты событий, которые будут переносить переменные в другой класс (который их прослушивает).Это медленные методы.

Я знаю, что есть локальные переменные (которые объявлены внутри функции и доступны только для этой функции) и глобальные переменные (которые объявлены внутри класса как частные или общедоступные и доступныв этом классе).Могу ли я каким-то образом создать какие-то «суперглобальные» переменные, которые доступны для всей флеш-программы?

Если нет, знаете ли вы, ребята, способ передачи переменных в ООП-проекте?1008 * Спасибо!Я постараюсь реализовать синглтон.

Ответы [ 3 ]

2 голосов
/ 24 ноября 2010

НЕ ДОЛЖЕН быть чем-то похожим на синглтон.Решение довольно простое:

package sg {
    public class SuperGlobal {
        public static var vars:Array = new Array();
    }
}

Где бы вы ни находились в коде, вы можете получить доступ к массиву vars с помощью этого:

sg.SuperGlobal.vars["test"] = "Hello World!";

// somewhere else:
trace(sg.SuperGlobal.vars["test"]); // Hello World!
0 голосов
/ 24 ноября 2010

Синглтон-класс:

package {

   public class SingletonDemo {
      private static var instance:SingletonDemo;
      private static var allowInstantiation:Boolean;

      public static function getInstance():SingletonDemo {
         if (instance == null) {
            allowInstantiation = true;
            instance = new SingletonDemo();
            allowInstantiation = false;
          }
         return instance;
       }

      public function SingletonDemo():void {
         if (!allowInstantiation) {
            throw new Error("Error: Instantiation failed: Use SingletonDemo.getInstance() instead of new.");
          }
       }
    }
}

Думаю, я понял это сейчас.Спасибо!

0 голосов
/ 24 ноября 2010

Обычно это делается с помощью одноэлементного класса, который содержит некоторые переменные, которые можно использовать везде.Создайте, например, один класс с именем «Среда», «Настройки» или «Программа», который содержит некоторые статические переменные, и каждый класс может получить к ним доступ, например, через Settings.soundIsMuted.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...