发现个好东西Flex 3 Posters
As3,Flex3的类图Poster,来源Flex 3 Posters
转载如下:
Poster 1 : 13MB
Poster 2 : 17MB
Poster 3 : 18.7MB
Poster 4 : 13.0MB
Poster 5 : 13.8MB
Poster 1 : 13MB
Poster 2 : 17MB
Poster 3 : 18.7MB
Poster 4 : 13.0MB
Poster 5 : 13.8MB
Adobe AIR应用程序要实现根据网络是否连接,来处理相应的操作,查了下官方文档和手册,发现相关的内容如下:
检测网络连接更改
监听事件方法
NativeApplication.nativeApplication.addEventListener(Event.NETWORK_CHANGE, onNetworkChange);
此事件只是确定网络连接的状态发生改变,而不能告诉你网络是否可用。要进一步确定网络的可用性还需要下面的类。
检测 HTTP 连接
实现方法
var monitor:URLMonitor;
monitor = new URLMonitor(new URLRequest(‘http://www.adobe.com’));
monitor.addEventListener(StatusEvent.STATUS, announceStatus);
monitor.start();
function announceStatus(e:StatusEvent):void {
trace("Status change. Current status: " + monitor.available);
}
用于确定http链接是否可用,实际中还可以把URLRequest的请求方法设为HEAD,以避免下载整个页面。
通过实验发现,实际情况和文档里说的不一样,文档里说URLMonitor的pollInterval属性为0时(默认为0),则不定期轮询服务器,而仅在调用 start() 后和网络状态发生更改时立即轮询。但实际测试结果,当网络状态发生改变时,并不能触发状态改变事件,什么原因还不清楚。
最后的解决办法是,在上面的检测网络连接更改事件中创建URLMonitor实例并监听状态改变事件,然后调用start()方法,在状态改变事件里判断链接是否可用,进一步处理相关操作。实现代码如下:
private var monitor:URLMonitor;
NativeApplication.nativeApplication.addEventListener(Event.NETWORK_CHANGE, onNetworkChange);
public function onNetworkChange(event:Event):void{
trace("网络连接发生改变");
//监视网络状态
var url:URLRequest=new URLRequest(“要监测的网络地址”);
url.method = "HEAD";
monitor = new URLMonitor(url);
monitor.addEventListener(StatusEvent.STATUS, onMonitor);
monitor.start();
}
private function onMonitor(event:Event):void
{
monitor.removeEventListener(StatusEvent.STATUS, onMonitor);
trace("连接"+monitor.available);
if(monitor.available){//网络连接可用
//处理联网操作
}
else
{
//网络连接不可用,相关处理
}
}
检测套接字连接
实现方法
socketMonitor = new SocketMonitor(‘www.adobe.com’,6667);
socketMonitor.addEventListener(StatusEvent.STATUS,socketStatusChange);
socketMonitor.start();
function announceStatus(e:StatusEvent):void {
trace("Status change. Current status: " + socketMonitor.available);
}
没有实验。
今天收到朋友nick的一个mail,就AIR 的尝试这篇文章中提到的一些AIR开发应用中存在的问题,问道“占用内存的问题,不知道是他开发的问题,还是air的通病?”回复mail后感觉这是个常见的疑问,所以把回复整理了一下发上来与同道探讨分享。
1、关于AIR应用占用内存的问题
就realazy开发的这个爱饭Adobe AIR应用,他是用HTML,CSS和javascript方式开发的,这种方式是基于air内嵌的webkit 引擎的(谷歌浏览器和苹果上web浏览器使用的web引擎),所以即使什么都不做,用这种方式开发就相当于打开了一个基于webkit引擎的web浏览器;
另外即使使用Flash AS方式和Flex方式开发,只要在应用中使用了html特性的功能就一样相当于打开了webkit浏览器。
2、三种Adobe AIR应用开发方式中,对内存资源消耗的大小顺序
由小到大的顺序是:单纯使用flash AS3开发(不使用html特性)<单纯使用FLex开发(不使用html特性)<使用html特性的开发:有三种情况HTML+CSS+JAVASCRIPT方式,使用flash as3和flex开发方式中包括html特性的开发)
Flex开发方式中因为使用Flex的框架极大的提高了开发效率和开发的协作性,但Flex框架中的各类组件本身却也事实上使编译结果文件更大,占用计算机的资源也更多,所以这种方式比单纯用flash AS3方式开发要消耗过更多的系统资源。
3、Adobe AIR跨平台开发的透明性
Adobe AIR程序可以跨平台运行的特性,是其优势之一,目前Adobe AIR1.5已经能支持Mac、windows上,和linux环境。
对于开发者来说,跨平台开发的代码透明是最理想的了,但是由于操作系统的管理方式的差异,要做到完全透明是不易的甚至有时是不可能的,具体参看关于Adobe AIR跨平台的透明开发问题。
就realazy开发的这个爱饭Adobe AIR应用在linux下无法给窗口加阴影的问题,那不是Adobe AIR的问题,而是linux显示模式的问题,具体可以看我的这篇文章关于Adobe AIR 1.1 for Linux beta;只要在Adobe AIR应用开发中做些平台能力判断,做差异性处理就可以是Adobe AIR应用的跨平台开发更完美些了。