2012-04-15 71 views
0

所以我試着去訪問Flash變量,但我不斷收到此錯誤:Flash變數和AS3

Line 27 1180: Call to a possibly undefined method LoaderInfo.

我試圖把下面的代碼和我的課之外,但它從我收集似乎它認爲'LoaderInfo'是另一個不是的功能。

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

我該如何解決這個問題?

+0

@MartyWallace是的,我知道,但我不應該仍然得到這個錯誤。 – 2012-04-16 02:27:31

回答

3

看起來您忘記了導入flash.display.LoaderInfo

但是,你可能只需要以及省略類型轉換:

this.root.loaderInfo.parameters;

+0

忘了添加導入 – 2012-04-16 14:10:52

0

從你的函數名&返回類型的喜歡,看來你是相當tryiing來實現這一點:

function getFlashVars():Object{ 

    return root.loaderInfo.parameters; 
} 

而且這已經是給你一個靜態的對象。你並不需要一個函數來獲取這些參數。

至少不是上面那個。您可以將它們取爲:

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

如果你想要一個優雅的方式Flash變量的工作,你可以使用FlashVars classthe 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()); 
     } 
    } 
}