2009-10-09 30 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