FlashVars и AS3

Итак, я пытаюсь получить доступ к переменным флэш-памяти, но я продолжаю получать эту ошибку:

Строка 27 1180: Вызов возможно неопределенного метода LoaderInfo.

Я попытался поместить приведенный ниже код в свой класс и за его пределы, но из того, что я понял, кажется, что он считает «LoaderInfo» другой функцией, которой он не является.

public function getFlashVars():Object {
    var paramList:Object = LoaderInfo( this.root.loaderInfo ).parameters;
    var myParam:String = paramList["myParam"];
    return myParam;
}

Как мне обойти это?

Эли


person Eli Stone    schedule 15.04.2012    source источник
comment
@MartyWallace Да, я знаю это, но я не должен по-прежнему получать эту ошибку.   -  person Eli Stone    schedule 16.04.2012


Ответы (3)


Похоже, вы забыли импорт для flash.display.LoaderInfo.

Но вы, вероятно, также можете опустить приведение типов:

this.root.loaderInfo.parameters;

person weltraumpirat    schedule 16.04.2012

Судя по имени вашей функции и типу возвращаемого значения, вы скорее пытаетесь реализовать это:

function getFlashVars():Object{

    return root.loaderInfo.parameters;
}

Кроме того, это уже статический объект для вас. Вам действительно не нужна функция для получения этих параметров.

По крайней мере, не тот, что выше. Вы можете получить их как:

root.loaderInfo.parameters.myParam1
root.loaderInfo.parameters.myParam2
root.loaderInfo.parameters.myParam3
...
person loxxy    schedule 16.04.2012

Если вам нужен элегантный способ работы с flashvars, вы можете использовать Класс FlashVars из библиотеки храма. Этот класс является оболочкой для flashvars, поэтому к ним можно получить доступ в местах, где нет Stage.

У вас есть возможность установить значение по умолчанию и тип класса для каждой flashvar отдельно. В сочетании с перечислимым классом FlashVarNames вы знаете, какие flashvars используются в приложении.

Вы должны создать/настроить FlashVars один раз в своем основном файле.

package
{
    import temple.data.flashvars.FlashVars;

    import flash.text.TextField;

    public class FlashVarsExample extends DocumentClassExample 
    {
        private static const _LANGUAGE:String = 'language';
        private static const _VERSION:String = 'version';
        private static const _IS_DEMO:String = 'is_demo';

        public function FlashVarsExample()
        {
            FlashVars.initialize(this.loaderInfo.parameters);

            FlashVars.configureVar(_LANGUAGE, 'nl', String);
            FlashVars.configureVar(_VERSION, 1, int);
            FlashVars.configureVar(_IS_DEMO, true, Boolean);

            var txt:TextField = new TextField();
            txt.width = 550;
            txt.height = 400;
            this.addChild(txt);

            trace('FlashVars.getValue(_LANGUAGE) : ' + FlashVars.getValue(_LANGUAGE) + "\n");
            trace('FlashVars.getValue(_VERSION) : ' + FlashVars.getValue(_VERSION) + "\n");
            trace('FlashVars.getValue(_IS_DEMO) : ' + FlashVars.getValue(_IS_DEMO) + "\n");
            trace(FlashVars.dump());
        }
    }
}
person Mark Knol    schedule 16.04.2012