分类“AIR”的存档

关于Adobe AIR的无缝安装

电介质 发布于 2008年07月19日 星期六

web页上的无缝安装,是Adobe AIR从技术角度促进推广的一个有效手段,通过Adobe AIR的这一无缝安装技术,可以在web页面上检测安装Adobe AIR运行时、Adobe AIR应用程序,以及启动运行Adobe AIR应用程序。

要使用这一技术,首先需要flash player要在版本9以上,在web页执行AIR应用无缝安装的swf文件,是通过调用Adobe官方提供,一个air.swf文件(http://airdownload.adobe.com/air/browserapi/air.swf)中的API来实现的这些功能的。

在Adobe AIR的SDK里提供了一个例子源代码:badge其中包括fla,as,js和html文件,核心代码就是as了,js是为了在html页里嵌入swf文件。

这个例子,只提供了从web安装Adobe AIR运行时和Adobe AIR应用程序的功能,需要提供的参数中要注意的是,appurl必须是绝对地址,而不能是相对地址,就是类似”http://domain.com/youair.air”的形式。

网上流传的另外一个AIRInstallBadge.swf则提供了全部的Adobe AIR无缝功能。其中另外需要提供的参数,包括Adobe AIR应用程序ID参数appid和发布者ID参数pubid。Adobe AIR应用程序ID,是在Adobe AIR应用程序描述文件里指明的,形如com.adobe.example.myTest,发布者ID则是在Adobe AIR程序打包发布时生成的,一般可以在安装后的Adobe AIR应用程序目录的META-INF\AIR目录下,看到publisherid文件,用记事本打开里面的字符串就是。这两个参数是用于确定Adobe AIR程序是否被安装,已经启动运行Adobe AIR程序所必须的。

另外如果开发者想要Adobe AIR程序可以从web启动运行,则必须将Adobe AIR程序描述文件的allowBrowserInvocation(运行浏览器调用)元素设为true。

文章分类: AIR ->发表评论 »

关于Adobe AIR跨平台的透明开发问题

电介质 发布于 2008年07月06日 星期日

Adobe AIR程序可以跨平台运行的特性,是其优势之一,虽然目前只能在Mac、windows上,但linux环境也会很快被支持,已经在开发进程当中。

对于开发者来说,跨平台开发的代码透明是最理想的了,但是由于操作系统的管理方式的差异,要做到完全透明是不易的甚至有时是不可能的,今天看了Adobe 官方的一个例子,知道至少下面的一些问题是需要开发者去分别为不同平台去处理的。

对于Mac是Dock Icons(停靠图标),对于windows是System tray icons(系统托盘图标);对mac和windows都使用过人人,应该知道他们的区别。在Adobe AIR开发中就需要针对这两个的区别分别处理,例子代码如下:

if(NativeApplication.supportsDockIcon){
var dockIcon:DockIcon = NativeApplication.nativeApplication.icon as DockIcon;
NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE, undock);
dockIcon.menu = createIconMenu();
} else if (NativeApplication.supportsSystemTrayIcon){
var sysTrayIcon:SystemTrayIcon =
NativeApplication.nativeApplication.icon as SystemTrayIcon;
sysTrayIcon.tooltip = “Stopwatch”;
sysTrayIcon.addEventListener(MouseEvent.CLICK,undock);
sysTrayIcon.menu = createIconMenu();
}

这个例子代码通过在运行时判断是否支持Dock Icons和System tray icons,来分别用不同的代码段处理Adobe AIR应用程序的两个平台图标的显示、事件监听、和菜单创建。将NativeApplication.nativeApplication.icon 根据平台支持情况分别作为DockIcon和SystemTrayIcon,来分别处理调用,事件监听和菜单创建,在Windows下还有SystemTrayIcon的工具条提示信息的设置。

另外就是对于用户通知当前Adobe AIR应用程序有事件发生的处理,在Mac OS X,Dock Icon能被用来通知有事件发生,而windows下采用的是另外一套方案,可以通过改变system tray icon的图像,或弹出一个窗口消息。在窗口层面的的事件通知功能,是用一个当前应用程序窗口的任务栏按钮的闪动来实现,以吸引用户去点击按钮,查看窗口事件。因此对于此类消息事件通知的开发,同样需要两套不同的代码支持,例子代码如下:

if(NativeApplication.supportsDockIcon){
        var dock:DockIcon = NativeApplication.nativeApplication.icon as DockIcon;
        dock.bounce(NotificationType.CRITICAL);
    } else if (NativeApplication.supportsSystemTrayIcon){
        stage.nativeWindow.notifyUser(NotificationType.CRITICAL);
    }

这个例子代码根据操作系统的支持情况分别调用DockIcon.bounce()NativeWindow.notifyUser()两个函数来处理,提示通知。

对于将来的linux下的支持,我想linux下的支持方式应该是类似windows的SystemTrayIcon方式,不应该再出来另外一种情况的单独处理判断了吧。

文章分类: AIR ->1 条评论 »

Adobe AIR 窗口基础

电介质 发布于 2007年10月17日 星期三

Adobe AIR的窗口API包含下列的类。

Package Classes
flash.display

NativeWindow, NativeWindowInitOptions

用下列类定义的窗口字串常量:

NativeWindowDisplayState, NativeWindowResize, NativeWindowSystemChrome

flash.events NativeWindowBoundsEvent, NativeWindowDisplayStateEvent, NativeWindowErrorEvent
flash.system NativeWindowCapabilities

Adobe AIR提供一个容易使用的,跨平台的窗口API,用于建立本地操作系统窗口,可以使用flash,Flex,和HTML编程技术去创建。

使用AIR,你有很大的空间开发外观感觉很好的应用程序。你可以创建看起来和标准桌面应用程序一样的窗口,当运行在MAC系统下时匹配苹果的风格,在Windows系统下运行时与微软的风格保持一致。你也可以使用皮肤,扩展flex框架提供的风格(chrome不知该如何翻译,有知道的提醒一下,谢谢!),而建立你自己的窗口风格。你甚至能用矢量图或位图画你自己的艺术化的窗口,同时AIR完全支持透明和与桌面的alpha混合。矩形窗口太普遍了吧,画个圆的玩玩。

AIR支持两种截然不同的窗口工作APIs:flash导向的本地窗口类(NativeWindow)和HTML导向的JavaScript窗口类。使用flash场景直接用NativeWindow类创建窗口和显示列表。去加入视觉对象到本地窗口,你加入对象到窗口场景的显示列表。用javascript创建的窗口使用html、css和javscript显示内容。要加入视觉对象到html窗口,你要加入内容到DOM。(翻译的别扭附上原文AIR supports two distinct APIs for working with windows: the Flash-oriented NativeWindow class and the HTML-oriented JavaScript Window class. Windows created directly with the NativeWindow class use the Flash stage and display list. To add a visual object to a NativeWindow, you add the object to the display list of the window’s stage. Windows created with JavaScript use HTML, CSS, and JavaScript to display content. To add a visual object to an HTML window, you add that content to the DOM (using any common browser-related technique). )

注意:HTML窗口是一个特殊的本地窗口类型。AIR主机附加一个本地窗口属性给HTML窗口,就是提供访问本地窗口实例下的入口。(好像翻译不准确附带原文Note: HTML windows are a special category of NativeWindow. The AIR host adds a nativeWindow property to HTML windows that provides access to the underlying NativeWindow instance. )

被你的应用程序自动创建的第一个窗口,基于AIR的应用程序描述文件在rootContent元素详细说明的参数指定。如果根内容是一个SWF文件,一个本地窗口被建立并且这个SWF文件被载入窗口。如果根内容是一个html文件,那么一个HTML窗口被创建,并且这个HTML页被载入。

本地窗口使用一个基于事件的程序模式。在窗口对象里改变一些属性或者调用方法,可以影像应用程序显示或行为,原因是,应用程序组件发布事件通知,感兴趣的组件能够监听到事件。例如,当系统最大化按钮被用户点击,下列是事件会发生的顺序:

1.用户点击最大化按钮。

2.一个显示状态改变(displayStateChanging)事件被发送到窗口。

3.如果没有被注册的监听者取消这个事件,那么这个窗口就会最大化

4.一个显示状态改变(displayStateChanging)事件被窗口发布通知给监听者,告诉它这个改变已经发生了。

5.一个移动(move)事件被发送到顶端,窗口左角因为最大化操作被移动。(原文不知到是否这样翻译有点怪A move event is dispatched if the top, left corner of the window moved because of the maximize operation. )

6.一个改变大小(resize)的事件被发送,窗口的大小因极大化操作被改变。

窗口最小化,还原,关闭,移动,和改变大小事件顺序也是类似的。

关于窗口API类,方法,属性,和事件的详细描述,参看 AIR ActionScript 3.0 Language Reference (http://www.adobe.com/go/learn_flex3_aslr). 关于使用Flash显示列表的一般信息, 看 “Display Programming” 部分在 Programming ActionScript 3.0 (http://www.adobe.com/go/programmingAS3) 参考里.

文章分类: AIR ->2 条评论 »

Adobe AIR已经更新了

电介质 发布于 2007年10月13日 星期六

10月1日Adobe AIR beta2发布了,具体看 http://labs.adobe.com/downloads/air.html

比beta1有了较大的变化,除了一些API的变化外,AIR应用程序的描述文件(application.xml)也有了变化,具体看http://labs.adobe.com/wiki/index.php/AIR:Release_Notes文档说明。

稍前一天9月30日,Adobe AIR for Flash CS3 Professional 的update也更新到beta2,详情看http://labs.adobe.com/wiki/index.php/AIR:Flash_CS3_Professional_Update文档,之前装过beta1的要根据文档说明卸载更新了。

相应的各类开发文档也更新到Beta2版本,具体看http://labs.adobe.com/wiki/index.php/AIR:Documentation文档页面,主要涉及三块文档,Flex开发、HTML和Ajax开发、Flash开发,除了有在线文档地址外,还都有相应的.zip包文件,供下载本地使用,每个都包括开发指南和语言参考。3个zip文件下载链接地址如下:

面向Flex的AIR开发文档http://download.macromedia.com/pub/labs/air/air_b2_docs_flex_100107.zip

面向HTML和Ajax的AIR开发文档http://download.macromedia.com/pub/labs/air/air_b2_docs_html_100107.zip

面向Flash 的AIR开发文档http://download.macromedia.com/pub/labs/air/air_b2_docs_flash_100107.zip

也可以经常去它们3个的开发中心去看看更多的AIR开发交流信息

Flex的AIR开发中心http://www.adobe.com/devnet/air/flex/

HTML 和 Ajax的AIR开发中心 http://www.adobe.com/devnet/air/ajax/  

Flash 的AIR开发中心 http://www.adobe.com/devnet/air/flash/

前面阅读学习的blog文档也有过时的地方,请以上面最新文档为主。

粗略的扫了一下新的文档,感觉这个版本的功能也比Beta1要强大了许多,许多Beta1版提示不支持的功能,这一版也都开始有支持了。

文章分类: AIR ->发表评论 »

Adobe AIR窗口相关内容

电介质 发布于 2007年08月30日 星期四

从现在开始我们开始接触,如何使用Adobe AIR提供窗口类API去创建和操纵窗口,主要会包括下列主题:

如果是使用Flex开发Adobe AIR应用,参考下列主题:

文章分类: AIR ->3 条评论 »