【问题标题】:FlashVars & AS3FlashVars & AS3
【发布时间】:2012-04-15 23:44:36
【问题描述】:

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

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

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

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

我该如何解决这个问题?

伊莱

【问题讨论】:

  • @MartyWallace 是的,我知道,但我不应该仍然收到此错误。

标签: actionscript-3 flash flashvars


【解决方案1】:

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

但你也可以省略类型转换:

this.root.loaderInfo.parameters;

【讨论】:

    【解决方案2】:

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

    function getFlashVars():Object{
    
        return root.loaderInfo.parameters;
    }
    

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

    至少不是上面那个。您可以按以下方式获取它们:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-10
        • 2011-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-03
        相关资源
        最近更新 更多