Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex Flex:如何使用来自不同类的FlashVar_Apache Flex_Actionscript 3 - Fatal编程技术网

Apache flex Flex:如何使用来自不同类的FlashVar

Apache flex Flex:如何使用来自不同类的FlashVar,apache-flex,actionscript-3,Apache Flex,Actionscript 3,我只是在学习动作脚本,所以遇到了这个问题 在我的应用程序中,我经常调用不同的web服务,因为我不想在代码中硬编码指向它们的URL,所以我将URL作为FlashVar传递给这些服务 目前我是这样做的: public var siteUrl:String; public var gameId:String; public function main():void { siteUrl =

我只是在学习动作脚本,所以遇到了这个问题

在我的应用程序中,我经常调用不同的web服务,因为我不想在代码中硬编码指向它们的URL,所以我将URL作为FlashVar传递给这些服务

目前我是这样做的:

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

            public function main():void
            {
                siteUrl = Application.application.parameters.siteurl;
                gameId = Application.application.parameters.gameid;
其中main是一个函数,在应用程序的创建完成事件中调用

这样,我可以从应用程序的主文件调用这两个变量,但我希望从其他文件访问它们。(其他类别)


那么,有没有一种方法可以使用flashvars创建带有常量和init值的类,这样我就可以在任何地方使用它们(当然在导入之后)

参数只存储在Application.Application.parameters对象中,这是静态的。没有理由不能从代码中的其他类访问它

如果您想编写一个封装参数的类(可能验证它们或其他),您可以相当轻松地完成这项工作。可以使用for each循环来循环所有参数。比如:

var params:Object = Application.application.parameters
for(var name:String in params) {
  var value:String = params[name] as String;
  /* do something with the param */
}
如果您想让您的类实际验证一些东西,那么它可以检查它期望的每个参数,并将其存储在局部变量中

这完全取决于你自己的喜好。有些人可以在需要时访问parameters对象。有些人喜欢通过拥有一个实际定义所有预期配置变量的config类来完成额外的代码

更新回应评论:

与其让一个模块声明变量,让其他模块依赖该模块来访问属性,不如让一个配置模块(所有需要的模块都将使用该模块)更简洁

您可以使用静态类、单例或一些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;

就我个人而言,我不会使用静态类,但它是最容易显示的。

看。e、 g.我已经创建了一个变量:InfoService=Application.Application.parameters.InfoService;在一个模块中。我不想以Application.Application.parameters.infoservice的形式访问它;另一方面,我只想打电话给InfoService。如何做到这一点非常感谢你!我一直在寻找这个解决方案