0

所以我试图访问闪存变量,但我一直收到这个错误:

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

我曾尝试将以下代码放入班级内外,但从我收集到的内容看来,它认为“LoaderInfo”是另一个并非如此的函数。

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

我该如何解决这个问题?

伊莱

4

3 回答 3

3

看起来您忘记了flash.display.LoaderInfo.

但是您也可以省略类型转换:

this.root.loaderInfo.parameters;

于 2012-04-16T05:03:54.020 回答
0

从您的函数名称和返回类型之类的角度来看,您似乎正在尝试实现这一点:

function getFlashVars():Object{

    return root.loaderInfo.parameters;
}

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

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

root.loaderInfo.parameters.myParam1
root.loaderInfo.parameters.myParam2
root.loaderInfo.parameters.myParam3
...
于 2012-04-16T03:15:49.607 回答
0

如果你想要一种优雅的方式来使用 flashvars,你可以使用Temple library 中的FlashVars 类。此类是 flashvars 的包装器,因此可以在没有 Stage 的地方访问它们。

您可以为每个 flashvar 单独设置默认值和类类型。结合 FlashVarNames 枚举类,您可以知道应用程序中使用了哪些 flashvar。

您应该在主文件中实例化/配置 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());
        }
    }
}
于 2012-04-16T12:36:42.763 回答