在flex页面中安装AIR程序

在flex页面中安装AIR程序
2010年07月17日
  
Submitted by john on Mon, 07/20/2009 - 18:59
  为了使AIR应用程序的安装更方便快捷,adobe公司提供了air.swf文件。air.swf文件中的主类提供了自动安装AIR应用程度的API,为了在flex页面中安装AIR应用程序,我们可以定义一个SchoolshapeAIR_InstallBadge.as文件来加载air.swf文件中的主类,调用其提供的各种安装API。以下是SchoolshapeAIR_InstallBadge.as文件的源码:
  public class SchoolshapeAIR_InstallBadge extends MovieClip
  {
  //在BROWSERAPI_URL_BASE加载air.swf
  private const BROWSERAPI_URL_BASE: String = "http://airdownload.adobe.com/air/browserapi";
  private const BROWSERAPI_URL_BACKUP: String ="http://localhost:8080/helpfiles";
  private var _appURL: String = "http://localhost:8080/helpfiles/Schoolshape.air";
  private var _appName: String = "Schoolshape";
  private var _airVersion: String = "1.5";
  private var airSWF:Object;
  private var airSWFLoader:Loader;
  // 初始化
  public function SchoolshapeAIR_InstallBadge() {
  airSWFLoader = new Loader();
  var loaderContext:LoaderContext = new LoaderContext();
  loaderContext.applicationDomain = ApplicationDomain.currentDomain;
  airSWFLoader.contentLoaderInfo.addEventListener(Event.INIT, onInit);
  try {
  airSWFLoader.load(new URLRequest(BROWSERAPI_URL_BASE + "/air.swf"), loaderContext);
  } catch (e:*) {
  airSWFLoader.load(new URLRequest(BROWSERAPI_URL_BACKUP + "/air.swf"), loaderContext);
  }
  }
  private function onInit(e:Event):void {
  airSWF = e.target.content;
  switch (airSWF.getStatus()) {
  case "installed" :
  break;
  case "available" :
  if (_appName && _appName.length > 0) {
  Alert.show("In order to run " + _appName + ", this installer will also set up Adobe® AIR™.");
  } else {
  Alert.show("In order to run this application, this installer will also set up Adobe® AIR™.");
  }
  break;
  case "unavailable" :
  Alert.show("Adobe® AIR™ is not available for your system.");
  break;
  }
  }
  public function onButtonClicked(e:Event):void {
  try {
  switch (airSWF.getStatus()) {
  case "installed" :
  Alert.show("Download and open the AIR file to begin the installation.");
  airSWF.installApplication( _appURL, _airVersion );
  break;
  case "available" :
  Alert.show("Starting install...");
  airSWF.installApplication( _appURL, _airVersion );
  break;
  case "unavailable" :
  // 什么也不做
  break;
  }
  } catch (e:Error) {
  }
  }
  }
  在flex页面中,我们定义一个按钮来触发SchoolshapeAIR_InstallBadge.as文件中的onButtonClicked方法,而需要的其他参数我们已经在SchoolshapeAIR_InstallBadge.as文件中定义了,从而不用从javaScript脚本文件中读取参数了,从而更简洁。
  Posts Tagged ‘air.swf’Adobe AIR Badge详解Tuesday, January 12th, 2010
  Adobe AIR SDK的Sample目录里面有一个Badge的应用,这个应用提供两个功能:
  检验应用需要安装的AIR版本,如果当前系统版本不同,安装需要的版本。在线安装应用。可以用里面的程序来直接部署AIR应用,但是默认的Badge大小是217X180像素高。这个默认的UI不能满足更多定制的需求,需要对这个Flash进行改造,或者是通过定制标签来进行改变。
  Badge的参数很多,设置起来比较麻烦。可以用Grant Skinner的Badger来代替烦琐的编码工作。这个Badger是一个AIR的应用,里面详细的列出了Badge的参数,你可以选择需要绑定的AIR文件,然后export你需要的Badge。
  如果是还不能满足定制的需要,就需要重新编写Badge的代码了。如果使用Flex开发UI,就需要独立编写Badge的功能了。
  整个badge的关键是把adobe的air.swf下载到应用中,并作为一个Object帮助我们安装AIR环境和AIR应用。
  //air.swf地址 private static const AIR_SWF_URL : String = "http://airdownload.adobe.com/air/browserapi/air.swf"; _airSWFLoader = new Loader(); _airSWFLoader.contentLoaderInfo.addEventListener( IOErrorEvent.IO_ERROR,handleAIRSWFError); _airSWFLoader.contentLoaderInfo.addEventListener( Event.COMPLETE, handleAIRSWFInit); try { _airSWFLoader.load(new URLRequest(AIR_SWF_URL)); } catch(e : *) { //自定义错误处理 }
  handleAIRSWFInit函数里面处理下载AIR环境的检测。
  private function handleAIRSWFInit(event : Event) : void { _airSWF = event.target.content; try { if(_airSWF.getStatus() == "installed") { //如果已经安装了应用,检测应用的版本。 } else if(_airSWF.getStatus() == "unavailable") { //系统无法安装AIR环境。 } else if(_airSWF.getStatus() == "available") { //系统可以安装AIR环境。 } } catch(e : *) { //自定义错误信息 } }
  检测应用是否安装的方法是通过air.swf的getApplicationVersion方法。
  //appID 是AIR应用的ID,在AIR的xml的配置文件有配置 //appURL是AIR应用的路径。 //appVersionCallback回调函数 _airSWF.getApplicationVersion(appID, appURL, appVersionCallback);
  在回调函数中处理传进来的version参数,判断安装的情况。
  private function appVersionCallback(version : String) : void { if(version == null) { //系统没有安装应用,进行安装操作。 } else if(checkVersion(_appVersion, version) == 1) { //系统安装了应用,但是版本比当前版本底,进行升级操作。 } else { //系统安装了应用,并且版本也与当前安装版本相同 //进行启动应用的操作。 } }
  利用air.swf可以把安装和启动的功能集成到Flex的应用中,并且可以实现通过网站启动AIR应用。air.swf的功能还很多,后续的文章会进行详细的整理和说明,并且会Open Source一个ActionScript的封装类来继续简化使用,让开发者的精力集中到UI的设计中。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值