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

来源:AIR Tip 6: Launching an Application from the Browser

这个教程将让你了解如何从浏览器中运行一个AIR应用并向它传递参数。本教程基于Adobe AIR Beta3。(AIR1.0与Beta3之间基本无差异…译者注)

AIR Beta3引入了浏览器接口(API)。这个API允许AIR应用可以从一个WEB浏览器中运行,并且它允许将参数从浏览器中传递到AIR应用里。

设置你的AIR应用

应用必须设置allowBrowserInvocation值为True来允许从浏览器API中接受事件(实现方式见代码示例1)。一旦这个值被设置了,你的AIR应用将接受一个BrowserInvokeEvent[参考]事件,当它通过浏览器API被调用的时候。

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>

了解API

浏览器API包含了一个标签,launchApplication,它事实上调用了你的AIR应用[更多信息]。这个应用可以得到3个参数(其中有2个是必须的)。

1.appID – 你的AIR应用的唯一标示
2.pubID – 你的AIR应用的发布者ID
3.arguments – 一个传递到你的AIR应用中的参数的数组

获取你的发布者ID

发布者ID[参考]和其它的应用程序一样,创建自一个授权证书。这个ID可以通过以下两种方式获得:

1.在每个AIR应用中,发布者ID可以用NativeApplication.nativeApplication.publisherID属性来引用
2.当一个AIR应用被安装了,发布者ID会保存在META-INF/AIR/publisherid文件中

创建一个电影用于运行AIR应用

作为一个良好的开始,你可以查看使用Adobe AIR SDK实现的安装示例。这个示例的源码可以在src/badge文件夹中找到。这个示例已经写入了载入浏览器API的代码。你将在示例代码2中看到它们。

ACTIONSCRIPT:

  1. _loader = new Loader();

  2. var loaderContext:LoaderContext = new LoaderContext();

  3. loaderContext.applicationDomain = ApplicationDomain.currentDomain;

  4. _loader.contentLoaderInfo.addEventListener(Event.INIT, onInit);

  5. try {

  6. _loader.load(new URLRequest(BROWSERAPI_URL_BASE + “/air.swf”), loaderContext);

  7. } catch (e:Error) {

  8. root.statusMessage.text = e.message;

  9. }

Adobe AIR SDK包含了检测AIR是否已经安装的代码。我们可以修改这个,以便我们可以在自定义的应用中显示状态信息。

ACTIONSCRIPT:

  1. private function onInit(e:Event):void {

  2. _air = e.target.content;

  3. switch (_air.getStatus()) {

  4. case “installed” :

  5. statusMessage.text = “AIR is installed and has been detected.”

  6. stage.addEventListener(MouseEvent.CLICK,onButtonClicked);

  7. break;

  8. case “available” :

  9. // AIR is Available

  10. statusMessage.text = “AIR is not installed – application cannot be launched.”

  11. break;

  12. case “unavailable” :

  13. // AIR Not Available

  14. statusMessage.text = “AIR is not installed – application cannot be launched.”

  15. break;

  16. }

  17. }

你可以很容易的扩展这个示例,在AIR未安装的时候去安装它(这样对你的应用非常有益处),但是在这个教程中,我们只是实现在已经安装的情况下,去运行一个AIR应用。示例代码4标明了如何使用installApplication标签来运行一个应用。

ACTIONSCRIPT:

  1. private function onButtonClicked(e:Event):void {

  2. statusMessage.text = “Attempting to Launch AIR Application”;

  3. _air.launchApplication(_applicationID,_publisherID,_arguments);

  4. }

在网页上插入这个运行管理器

示例代码5展示了如何插入这个运行管理器到网页中去(使用SWFObject)。所有的参数都通过浏览器API传递到了管理器中,其实是使用了FlashVars方法,在SWFObject中,使用的是so.addVariable标签。

在这个示例中,我把applicationID和publisherID使用FlashVars传递到了电影中,但是你或许不希望所有这些信息都被显示出来。在这里,你还是努力把这些代码敲入你的电影中吧。

JAVASCRIPT:

  1. var so = new SWFObject(“launchMovie.swf”, “badge”, “250″, “75″, “9.0.115″, “#FFFFFF”);

  2. so.addVariable( “applicationID”, “net.davidtucker.airtips.BrowserAPITest” );

  3. so.addVariable( “publisherID”, “xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.1″ );

  4. so.addVariable( “arguments”, “Application Launched from Browser,Argument 2″ );

  5. so.write(“foo_flashcontent”);

测试示例

要使这个示例正常工作,你需要拥有AIR TIP 5中说到的BrowserInvokeEvent示例。你可以点击这里安装

源文件
Download (15 kb)

参考资料
Getting the application and publisher identifiers (Developer Guide)
Checking from a web page if an AIR application is installed (Developer Guide)
Launching an installed AIR application from the browser (Developer Guide)
Loading the air.swf file (Developer Guide)


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