Доступ к переменным в другом классе? - PullRequest
0 голосов
/ 25 июля 2010

Прежде всего, я не понимаю классы, как их "вызывать" или "инициировать". Я невежественный класс

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

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

После входа в систему xmleditor загружает interface.swf. interface.fla использует более 10 файлов .as. один называется nodeNames.as Мне нужен оператор if в 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? и если да, то как?

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

1 Ответ

0 голосов
/ 25 июля 2010

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

public static var userType:String

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

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

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

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

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

Веселись!

...