2009-10-09 33 views
0

我剛學動作,所以遇到問題軟硬度:如何使用Flash變數,從不同類別的

在我的應用程序常常調用不同的Web Service,因爲我不想硬編碼的網址給他們在我的代碼中,我將url作爲flashvars傳遞給服務。

目前我做這種方式:

 public var siteUrl:String; 
     public var gameId:String; 

      public function main():void 
      { 
       siteUrl = Application.application.parameters.siteurl; 
       gameId = Application.application.parameters.gameid; 

其中主要是一個函數,這就是所謂的應用程序的創建完整的事件。

這種方式我可以從應用程序的主文件調用兩個變量,但我想從其他文件訪問它們。 (其他如類)

那麼,有沒有一種方法來創建Flash變量常量和初始化值有類,所以我可以(在導入過程後)在任何地方使用它們

回答

1

的參數只是存儲在該應用程序。 application.parameters對象,這是靜態的。沒有理由不能從代碼中的其他類訪問它。

如果你想編寫一個包裝參數的類(也許驗證它們或某個),你可以很容易地做到這一點。您可以對每個循環使用一個循環來遍歷所有參數。喜歡的東西:

var params:Object = Application.application.parameters 
for(var name:String in params) { 
    var value:String = params[name] as String; 
    /* do something with the param */ 
} 

如果你想你的類來實際驗證的東西,然後它可能只是檢查,預計每個參數,並將其存儲在一個局部變量。

這真的只是取決於你自己的喜好。有些人在需要時可以訪問參數對象。有些人喜歡通過擁有一個實際定義所有預期配置變量的配置類來實現額外的代碼完成。

更新迴應評論:

而是有一個模塊的聲明變量,並有其他模塊必須依賴於一個訪問這將是清潔的特性有一個配置模塊,一切都需要它的所有人都會使用它。

你可以使用靜態類或單例或一些IoC的東西。爲了簡單起見,我將向您展示一種可以通過靜態類來實現的方法。

class MyConfig { 
    private static var _infoService:String; 
    private static var _someOtherParam:int; 

    public static function get infoService():String { return _infoService; } 
    public static function get someOtherParam():int { return _someOtherParam; } 

    public static function initParams():Void { 
    var params:Object = Application.application.parameters; 

    _infoService = params.infoservice; 

    // just assuming you have a method to convert here. don't remember the 
    // code off the top of my head 
    _someOtherParam = convertToInt(params.someOtherParam); 
    } 
} 

確保您的應用初始化時調用MyConfig.initParams()。如果你想要失敗,你可以讓該方法實際驗證它獲得了它期望的一切,並拋出異常(或返回一個錯誤)。

然後,無論您需要在代碼中使用該配置,只需導入配置類並訪問參數即可。所以得到infoService只是:

var infoService:String = MyConfig.infoService; 

我個人不會使用靜態類,但它是最容易顯示。

+0

看。例如我已經創建了一個變量: InfoService = Application.application.parameters.infoservice; 在一個模塊中。我不想以Application.application.parameters的身份訪問它。信息服務部;來自其他,只是想調用InfoService。如何做到這一點 – 2009-10-09 14:45:56

+0

更新了答案,展示了一個簡單的例子 – Herms 2009-10-09 15:15:25

+0

非常感謝!我正在尋找這個解決方案 – 2009-10-09 20:41:52