所以我试图获得访问闪存变量但我不断收到此错误:
第27行1180:调用可能未定义的方法LoaderInfo。
我已经尝试将下面的代码放在我的课程内外,但似乎从我收集的内容来看,它认为'LoaderInfo'是另一个不是它的函数。
public function getFlashVars():Object {
var paramList:Object = LoaderInfo( this.root.loaderInfo ).parameters;
var myParam:String = paramList["myParam"];
return myParam;
}
我如何解决这个问题?
利
答案 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());
}
}
}