首先说明 为什么我们要获取这个版本号,通常在 xx-app.xml 里面我们必须给配置一个版本号,这样的话 app在安装的时候会自动识别是否覆盖,或者是显示在安装的过程中方便用户看到。然而,在有的时候

比如我们的游戏内部会给玩家一个提示当前版本号是多少,或者是我们做版本更新的时候,也会涉及到版本号的问题。那么问题来了?如何弄这个?

当然方法一 则是 做一个常量 直接赋值为 VERSION=”XXX.XX”;但是这样的话我们的版本更新会修改两个地方 第一个是xml配置里面的 第二个就是程序里面的。实在不方便。

近来翻看以前游戏的处理方式,则是如此。于是想到竟然配置文件中的版本号是必须的,那么能否直接加载这个xml文件来解析出版本号呢,答案当然可以。因为adobe已经为我们做好了这一步那就是

applicationDescriptor 这个字面的意思是应用程序描述器,但其实就是咱们的xx-app.xml里面的内容 因为这个东西返回的就是一个xml

接下来咱们撸代码


public function gameVersion( ):String
{
var _appXml:XML = NativeApplication.nativeApplication.applicationDescriptor;
default xml namespace = _appXml.namespace();
return appXml.versionNumber;
}

由于这个xml是带有命名空间的( 关于xml 或者是 as3的命名空间的问题如果不清楚可以看这篇文章  AS3.0 namespace书写)所以要加上  default xml namespace = _appXml.namespace(); 这句代码才行。然后就能解析出版本了。代码简单吧

当然也可以解析其他你在配置中设置的东西。因为这个xml是在air启动的时候就已经加载好了。

可以扩展一下:

鉴于为版本号进行一个归类的话 可以采用 写成顶级的形式,至于书面言语叫什么  不是很清楚 可参考这篇文章  在AS中书写顶级方法及属性


package com._523326.utils
{
import flash.desktop.NativeApplication;

public function get VERSION():String
{
if( Temp.V==null || Temp.V == "" ){
var _appXml:XML = NativeApplication.nativeApplication.applicationDescriptor;
default xml namespace = _appXml.namespace();
Temp.V = _appXml.versionNumber;
}
return Temp.V;
}
}
class Temp{
public static var V:String;
}

上面这样做就可以在任何地方 调用VERSION就可以获取到当前配置好的版本号 之所以增加了一个 Temp类 是为了避免在多次获取版本号的时候进行多次解析。

 

 

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Free Web Hosting