FlashVars& AS3

时间:2012-04-15 23:44:36

标签: actionscript-3 flash flashvars

所以我试图获得访问闪存变量但我不断收到此错误:

  

第27行1180:调用可能未定义的方法LoaderInfo。

我已经尝试将下面的代码放在我的课程内外,但似乎从我收集的内容来看,它认为'LoaderInfo'是另一个不是它的函数。

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

我如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

您似乎忘记了flash.display.LoaderInfo的导入。

但你可以省略类型转换:

this.root.loaderInfo.parameters;

答案 1 :(得分:0)

来自你的功能名称&返回类型,似乎你试图实现这个:

function getFlashVars():Object{

    return root.loaderInfo.parameters;
}

此外,这已经是您的静态对象了。你真的不需要一个函数来获取这些参数。

至少不是上面那个。您可以将它们取为:

root.loaderInfo.parameters.myParam1
root.loaderInfo.parameters.myParam2
root.loaderInfo.parameters.myParam3
...

答案 2 :(得分:0)

如果您想要一种优雅的方式来使用flashvars,可以使用FlashVars class中的the temple library。这个类是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());
        }
    }
}