RichBox-富盒子工作室
专业的RIA解决方案实现团队,承接Flash/Flex/ActionScript3/AIR/HTML5/CSS项目

来源:AIR Tip 5: Passing Arguments to an Application on Install

这个教程将告诉你当一个AIR应用使用Badge的方式来安装时,如何控制应用的安装进程并传递参数。这个教程包含了一篇文章和一个教学视频,它是基于AIR Beta3的版本的。

有人在评论里问我,当使用AIR Installer Badge来安装AIR应用的时候,是否可以传递参数到应用程序中去。答案是:可以,又不可以。首先,它不能直接完成这个功能,当然,你可以很容易的修改Badge文件以使它支持这个功能;其次,要让一个AIR应用接受BrowserInvokeEvent[参考],必须将应用配置文件的allowBrowserInvocation属性设置为True。

修改AIR Install Badge

假如你需要这个功能,那么你就要创建一个修改过的AIR Install Badge。源代码中附带了Adobe AIR Beta3的SDK。你可以在src/badge这个目录中找到它。你将需要修改AIRBadge.as这个文件。

1.你需要为这个类添加一个名为_arguments的属性。所有属性位于类的最底部,所以你可以把这个属性添加到其它属性的后面。这个属性的类型是数组。

ACTIONSCRIPT:

  1. private var _messageColor: String;

  2. private var _buttonColor: String;

  3. private var _imageURL: String;

  4. private var _appURL: String;

  5. private var _appName: String;

  6. private var _airVersion: String;

  7. private var _arguments: Array;

2.然后,你需要把参数分配到SWF文件中的_arguments属性。这个步骤是在构造函数中完成的。你需要把传递的字符串参数用Split转换为数组。你可以使用String类提供的Split标签来完成这个功能。在这个例子里,你可以用逗号作为数组的分隔符。

ACTIONSCRIPT:

  1. _imageURL = validateURL(parameters["imageurl"]);

  2. _airVersion = String(parameters["airversion"]);

  3. _appURL = validateURL(parameters["appurl"]);

  4. _arguments = String(parameters["arguments"]).split(“,”);

3.最后,你需要把_arguments作为第三个参数传递给_air.installApplication标签。这个标签在onButtonClicked函数中被调用了两次,你需要同时更新它们两个。

ACTIONSCRIPT:

  1. _air.installApplication( _appURL, _airVersion, _arguments );

通过这些更改,现在你可以传递参数到Badge安装器中了,随后这些参数会被传递到你的AIR应用安装进程中去。作为一个示例,我创建了一个AIR的应用,用来显示所有传递给它的参数,它同时也显示其它从BrowserInvokeEvent中获取的参数。

针对这个安装过程,我修改了我的InstallBadge.js文件来包含所有的参数(这些参数是用Flashvars传递的)。在这个示例里我创建了一个ColdFusion文件用来传递IP地址和服务器名称到应用中。

这个AIR应用列出了所有的BrowserInvokeEvent传递给它的参数。下面你将看到这个示例。

在站点中加入一个修改过的Dadge

最近我为Adobe AIR开发者中心写了一篇名为《使用Badge安装特性无缝配置Adobe AIR应用》的文章。 这篇文章详细介绍了如何在一个页面中引用Badge。在这个例子中我只是稍微修改了一下这些文件(添加了一些典型的参数)。

首先,我修改了InstallBadge.js文件,并且我把这个新的文件放在了这个教程之中。其次,我添加了一个全局变量(airApplicationArguments)到页面的头部。这是一个逗号分隔的参数:

JAVASCRIPT:

  1. // AIR Application Arguments

  2. var airApplicationArguments = “First Argument,Second Argument”;

设置你的AIR应用

这是两个为了让你的AIR应用可以接受BrowserInvokeEvents事件所必须做的两个设置。首先,你需要修改你的AIR配置文件,以允许它接受这些事件。确保allowBrowserInvocation这个属性在你的XML配置文件中设置为True。

XML:

  1. <!– Whether the application can be launched when the user clicks a link in a web browser.

  2. Optional. Default false. –>

  3. <allowBrowserInvocation>true</allowBrowserInvocation>

其次,你需要告诉你的AIR应用去监听这些事件,如下所示:

ACTIONSCRIPT:

  1. import flash.events.BrowserInvokeEvent;

  2. private function init():void {

  3. NativeApplication.nativeApplication.addEventListener(BrowserInvokeEvent.BROWSER_INVOKE,onBrowserInvoke);

  4. }

  5. private function onBrowserInvoke(e:BrowserInvokeEvent):void {

  6. // Code to React to BrowserInvokeEvent

  7. }

示例程序

这个示例AIR应用(正如你在视频中所看到的)是可用的。它显示了所有通过BrowserInvokeEvent传递给它的信息。这个程序的源码集成在右键菜单里,你点击右键就可以看到。

视频(点击查看)

附加文件
安装AIR应用 – Click Here
源文件下载 (636 kb)

参考文献
Livedocs – BrowserInvokeEvent
Developer Center – Deploying Adobe AIR applications seamlessly with the badge install feature
Developer Guide – Launching an Installed AIR Application from the Browser


Tags: ,

Post Comment

Please notice: Comments are moderated by an Admin.


Powered by Wordpress
Theme © 2005 - 2009 FrederikM.de
BlueMod is a modification of the blueblog_DE Theme by Oliver Wunder