2010-07-25 8 views
0

Во-первых, я не понимаю классы, как «называть» или «инициировать» их. Я не осведомлен о классе.Доступ к переменным в другом классе?

У меня есть два файла .fla. Один из моих файлов .fla состоит из 15 + .as файлов; мы будем называть этот XML-редактор. Другой файл .fla состоит из 10 + .as файлов; мы будем называть это интерфейсом.

xmleditor.swf загружает интерфейс .swf. Внутри xmleditor.swf появляется экран входа в систему, и конечный пользователь входит в систему как «пользователь» или «администратор». «Пользователь» или «Администратор» хранится в общедоступной переменной «userType». Переменная userType создается в одном из многих xmleditor.fla .as файлов, называемых Login.as.

После входа в систему xmleditor загружает интерфейс .swf. interface.fla использует 10 + .as файлы. один называется nodeNames.as мне нужно, если заявление в nodeNames.as что-то вроде этого:

if (Login.userType == "user"){ 
    trace("do something"); 
} 

У меня есть следующий FlashVars.as файл, но я понятия не имею, что эти шаги, чтобы заставить его работать.

package extras.utils { 
    import flash.display.Sprite; 
    import flash.display.LoaderInfo; 
    /* In AS3, we need to have a display object on the stage to access FlashVars 
     * this class can be used once, and then referenced from anywhere as 
     * FlashVars.data.variableName 
     */ 
    public class FlashVars extends Sprite { 
     public static var data:Object; 

     public function FlashVars() { } 

     public function load():void { //Only needs to be called once 
      data = this.root.loaderInfo.parameters; 
     }  

    } 
} 

Должен ли я использовать этот FlashVars? и если да, то как?

Или есть более простой способ доступа к переменной?

+0

Почему это так сложно выполнить? – Phil

ответ

0

хорошо, из чего я понимаю, вы Login.as является классом. Тогда у вас есть два способа доступа к переменной Login.userType: если вы хотите быть в состоянии назвать его Login.userType, вам нужно быть статического в классе

public static var userType:String 

это то доступно используя Login.userType из любого места в вашем приложении, если вы импортируете Login.

Но часто считается неправильной практикой иметь слишком много статических vars в вашем приложении, особенно из разных классов. так что вы можете иметь экземпляр вашего класса авторизации, хранящегося в переменной где-то в вашем приложении, наряду с чем вам нужно

var myLogin = new Login(); 
myLogin.userType = 'value'; 

Но следует помнить, что этот путь, каждый new Login() будет нести его собственный разные UserType, так вам нужно будет передать myLogin любому объекту, которому это необходимо.

Программирование объектов может быть запутанным, но очень мощным, я предлагаю вам прочитать об этом (в книгах или в Интернете), поскольку все это невозможно объяснить здесь.

Удачи!

+0

согласно моему файлу Login.as, userType уже является открытым статическим var. Login.as обычно импортируется в мой xmleditor.fla; но мне нужно использовать переменную в моем интерфейсе.fla Когда я импортирую Login.as в свой интерфейс.fla, я получаю всевозможные ошибки компиляции ... Я предполагаю, что кнопки, необходимые для Login.as, существуют только в xmleditor .fla, а не interface.fla, где мне нужен доступ к переменной Login.userType. – Phil

+0

Из моего интерфейса.swf я могу добавить следующие строки кода: trace (this.root.parent); // выходы [объект Loader] \t \t \t \t \t след (this.root.parent.parent); // [object xmleditor] – Phil

Смежные вопросы