`

[转] [Flash/Flex] Flex框架下的RIA开发现场--第3回 Adobe AIR 2的15项新功能

    博客分类:
  • FLEX
阅读更多
http://bbs.9ria.com/thread-75934-1-1.html

第3回
改变了桌面应用程序的Adobe AIR 2的15项新功能



     Adobe AIR 2、以及Flex 4.1/Flash Builder 4.0.1

    Adobe AIR(以下简称AIR)是一个在Windows、Mac OS X、Linux乃至Android系统上跨平台运行的应用程序的运行时环境。    AIR包含了能够构建基于Flash和基于Ajax的应用程序的SDK。运用Flex开发,通过Flash Player能使用从Web浏览器端到独立应用程序的众多对象,更进一步地增加了可实现的功能。

□ AIR 2的新功能介绍

    Flash Player 10.1增加了许多功能,使我们能开发出形式多样的应用程序。本文将按照以下主题来介绍一下AIR2.0的主要的新功能。

    ・Web渲染引擎WebKit的增强
    【1】HTML5/CSS3的支持
    【2】JavaScript处理高速化
  ・【3】全局错误处理
    ・系统原生功能的增强使用
    【4】原生安装程序
    【5】原生进程API
    【6】原生文件处理
    【7】拖拽远程文件实现文件拷贝
    ・デバイス連携が強化
    【8】大容量存储设备操作
    【9】打印机操作
    【10】从本地麦克风获取WAVE音频数据
    【11】多点触控与触摸手势
    ・网络功能增强
    【12】UDP Socket
    【13】TLS/SSL的支持
    【14】TCP服务端Socket的支持
    【15】DNS客户端
  在众多的新功能中,选取了第12点使用UDP广播为例开发简单通讯软件。

□ Flash Builder 4的Eclipse Plugin版和独立安装版
    Flash Builder 4的Eclipse Plugin版,不能升级,必须先卸载旧版本再安装新版本。
    Flash Builder 4的独立安装版,可以升级。  


Web渲染引擎WebKit的增强

□【1】HTML5/CSS3的支持
    苹果公司的Safari浏览器(4.0.3版)与WebKit(531.9版)渲染引擎捆绑在了一起。因此,加入了HTML5/CSS3的支持。
    使用HTML5开发桌面和iPad的公用库,在PC上利用AIR包装便可无需关心运行环境地进行部署。

□ 【2】JavaScript处理高速化
    JavaScript代码的运行速度因SquirrelFish Extreme引擎的升级获得50%的提速。






【3】全局错误处理

    获益于全局错误处理功能,在发生未捕获的错误时也能捕捉到它。由此,在发生预期不到的错误时,就能实现显示警告或输出日志等处理了。
    该功能也在Flash Player 10.1中获得支持。 
    对于WindowedApplication(下例中的app)的实例,由于能够获得applicationComplete事件中的loaderInfo信息,在这时就能捕捉到UncaughtErrorEvent的UNCAUGHT_ERROR事件了。

    app.addEventListener(FlexEvent.APPLICATION_COMPLETE,  applicationCompleteHandler);

    private function applicationCompleteHandler(event:FlexEvent):void
    {       
        WindowedApplication(event.target).loaderInfo.uncaughtErrorEvents
            .addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, unCaughtErrorHandler);
    }

    private function unCaughtErrorHandler(event:UncaughtErrorEvent):void
    {
        Alert.show(event.toString(), "Error");
    }


系统原生功能的增强使用

□【4】原生安装程序
    每个系统都能生成自己的文件安装程序。例如Windows的.exe,Max OS的.dmg以及Linux的.rpm/.deb文件。AIR的运行时环境能根据需要自动安装程序,使我们不必关心运行时的部署问题。
    另外,与使用.air文件安装有所不同,增强了在使用原生进程和原生安装文件进行安装的功能。

□ 【5】原生进程API
    原生进程API能够启动外部应用程序及进行相应标准输入输出操作。它能连协Windows的Windows Script Hosting、Mac OS X的appleScript,乃至其他能通过命令行启动的应用程序。要使用原生进程API,必须通过原生安装程序来安装。    在NativeProcessStartupInfo类中设置好要启动的应用程序,将它传给NativePross的start方法就能开始运行了。在ProgressEvent、IOErrorEvent的各个事件中,能实现标准输入输出错误处理。    应用程序的退出也能通过NativeProcessExitEvent的EXIT方法获知,因此也可以反映出外部应用程序的运行结果。

□ 【6】原生文件处理
    能够打开与应用程序关联的文件。即模拟在Windows等系统中双击打开文件的操作。
   调用File类中新增的openWithDefaultApplication方法。在非原生安装程序(即以.air文件)安装的情况下,有些文件类型有运行限制。

□ 【7】拖拽远程文件实现文件拷贝
    通过将远程资源文件的URL传递到系统剪贴板,将文件从AIR应用程序中拖拽到桌面等本地文件夹,从而实现简单的文件下载功能。拖拽功能中,使用到了air.desktop包中新增的URLFilePromise方法。
    private function fileLabel_mouseDown(event:MouseEvent):void
    {
        var clipboard:Clipboard = new Clipboard();
        if (clipboard.supportsFilePromise)
        {
            var filePromise:URLFilePromise = new URLFilePromise();
            filePromise.request = new URLRequest(http://www.tilfin.com/example.swc);
            filePromise.relativePath = "example.swc";

            var fileList:Array = new Array(filePromise);
            clipboard.setData(ClipboardFormats.FILE_PROMISE_LIST_FORMAT, fileList);
            NativeDragManager.doDrag(InteractiveObject(event.target), clipboard);
        }
    }
    该功能因各个系统的支持不同,需要确认Clipboard的supportsFilePromise属性。

□ 【8】大容量存储设备的操作
    能够对USB存储卡和闪存盘等外部连接设备进行文件系统操作,并能识别连入和拔出状态。
    使用flash.filesystem包中新增的StorageVolumeInfo类(StorageVolumeInfo属性提供单例)。
    通过StorageVolumeChangeEvent的STORAGE_VOLUME_MOUNT和STORAGE_VOLUME_UNMOUNT两个事件能识别设备的连入和拔出状态。由StorageVolume对象提供各个设备的信息。

□ 【9】打印机操作
    能够分门别类地设置打印相关的各种细节。如PaperSize类设置纸张尺寸,PrintUIOption类设置打印区域,PrintMethod类设置打印形式(Bitmap或Vector形式)。这些新增的类都包含在了flash.pringing包中。

□ 【10】从本地麦克风获取WAVE音频数据
    能够实现从连接电脑的麦克风中获取WAVE音频输入,进而进行音效处理、显示均衡器、音谱等非常广泛的功能。    在Microphone类中添加SampleDataEvent的SAMPLE_DATA事件,就能使用event.data.readFloat()方法捕捉到该时点的Sample值。

□ 【11】多点触控与触摸手势
    能够在Windows7上处理多点触控,在Windows7和Mac OS X 10.5.3上处理触摸手势。    在Multitouch类中,能够确认运行环境中输入设备的支持状态。在TouchEvent、GestureEvent、PressAndTapGestureEvent、TransformGestureEvent这些事件中,能捕捉到用户的输入。


网络功能增强

□ 【12】UDP Socket
    socket一直以来只能通过TCP实现客户端,而这次得到了大幅扩充。通过DatagramSocket类,能使用UDP进行单播、广播(能收能发)和多播(只发不收)。(详情请看下文中的例子)

□ 【13】TLS/SSL的支持
    在SecureSocket类中,可与支持TLS/SSL并有可靠有效证书的服务器进行连接和密文通信。

□ 【14】TCP服务端Socket的支持
    与UDP相同,TCP也能通过ServerSocket类实现服务端。这是“服务端开发可以用ActionScript来实现”的极其重大的升级。构建成为一个覆盖了从含有SQLite的AIR到服务端逻辑和数据库的基盘。
补充 通过ServerSocket实现了HTTP服务器的“airhttpd”
或许有些自卖自夸,公布了使用ServerSocket实现的HTTP服务器库“airhttpd”。可以参考例子中的Web应用程序。

airhttpd - Project Hosting on Google Code via kwout






□ 【15】DNS客户端
    使用新的flash.net.dns包中的DNSResolver类,能实现DNS域名解析。
ARecord:主机的IPv4地址
AAAARecord:主机的IPv6地址
MXRecord:主机的邮件交换记录
PTRRecord:IP地址的主机名
SRVRecord:服务的服务记录



实际练习做一下AIR2的通讯程序
     从这里开始,在众多新功能中,我们选择通过使用UDP的广播功能来尝试开发一个简单的通讯程序。开发环境为Flash Builder 4.0.1,SDK是Flex 4.1 + AIR 2.0.2。




图 样例程序的截屏
□ 选出网络接口

    接收数据的服务端实现。服务器为检测收到的数据包,需要监视特定的端口或地址。在此由于使用广播发送消息,将监视特定的网络。因此,首先选出对象网络。
    通过networkInfo属性能够取得NetworkInfo类的单例。而在findInterfaces方法中,能通过NetworkInterface对象列表取得电脑拥有的所有网络接口。
    通过address属性的InterfaceAddress对象列表能够取得NetworkInterface的地址信息。在此,我们从中选出在IPv4中具有广播地址的数据。      
    public static function getInterfaceAddressesForBind():Array
    {
        var addresses:Array = new Array();
        var netinfo:NetworkInfo = NetworkInfo.networkInfo;
        var netifs:Vector.<NetworkInterface> = netinfo.findInterfaces();
       
        for each (var netif:NetworkInterface in netifs) {
            for each (var addr:InterfaceAddress in netif.addresses) {
                if (addr.ipVersion == IPVersion.IPV4 && addr.broadcast) {
                    addresses.push(addr);
                }
            }
        }
       
        return addresses;
    }

□ 服务端处理和收发数据
    接收数据的实现是通过将端口、IP地址传递给bind方法,再调用receive方法。在收到数据时会触发DatagramSocketDataEvent.DATA事件,下例中在socket_dataReceived中改变字符串。
    发送数据的实现是对于相同的数据包,在send方法中设定发送数据、对象、长度、目标地址、目标端口并调用。在下例中,为了便于理解广播数据,将其定义在了Byte中。

    _socket = new DatagramSocket();
    _socket.addEventListener(DatagramSocketDataEvent.DATA, socket_dataReceived);
    _socket.bind(_port, "192.168.1.223");
    _socket.receive();    …【略】

    private function socket_dataReceived(event: DatagramSocketDataEvent):void {
        String msg = event.data.readUTFBytes(event.data.bytesAvailable);
        …
    }
   
    public function sendMessage(msg:String):void {
        var data:ByteArray = new ByteArray();
        data.writeUTFBytes(msg);
        _socket.send(data, 0, 0, "192.168.1.255", _port);
    }

具体处理请查看代码。   MessePeer.zip (7.76 KB)


在Flex/AIR上也能开发Android/移动应用程序!

    在新功能众多的AIR2中,已能实现绝大多数的桌面应用程序了。更进一步的使用,则是准备好包装了应用程序的各个系统的脚本,从原生进程进行操作等高级应用。
    Android用的AIR(Adobe AIR for Android)已经发布了beta版。使用Flex开发面向移动终端的应用程序,将在支持多屏的下一个版本(开发代号:Hero)中获得实现。那就借这个机会接触一下Flex/AIR怎么样?
  • 大小: 11.9 KB
  • 大小: 17 KB
  • 大小: 18.8 KB
分享到:
评论

相关推荐

    使用ADOBE FLEX 3 开发 Adobe AIR 1.5应用程序

    ### 使用ADOBE FLEX 3 开发 Adobe AIR 1.5应用程序 #### 一、引言 随着Web技术的发展,富互联网应用(RIA)成为了一种趋势,它结合了桌面应用的强大功能与Web应用的易部署特性。Adobe AIR(Adobe Integrated ...

    ADOBE AIR完整入門與開發實錄-使用Flex/Flash/Ajax開發AIR應用

    AIR允許利用現有的Web開發技能(包括Flash、Flex、HTML、JavaScript、Ajax)優勢,建立和配置跨平台(或跨作業系統)的桌面RIA(Rich Internet Applications)應用。透過詳細的實例講解,介紹AIR 的特性和開發技巧,讀者會...

    Flex3学习电子书--RIA开发详解与精深实践+AIR Adobe 新手培训教材

    Flex3是Adobe公司推出的一种富互联网应用程序(Rich Internet Application,简称RIA)开发框架,它基于ActionScript编程语言和MXML标记语言,为开发者提供了构建交互性强、视觉效果丰富的Web应用的强大工具。...

    Flex_3_RIA开发详解与精深实践.pdf

    书中的三个部分(Flex_3_RIA开发详解与精深实践1.pdf、Flex_3_RIA开发详解与精深实践2.pdf、Flex_3_RIA开发详解与精深实践3.pdf)可能是按照章节逐步展开,覆盖了Flex 3开发的各个方面,为读者提供全面的学习资源。

    flex开发系列书籍:AIR RIA开发

    【标题】:“flex开发系列书籍:AIR RIA开发” 【描述】:“浅谈基于FLEX与AIR的RIA开发技术及应用.pdf” 【标签】:“flex” “RIA” “AIR” 【正文】: 富互联网应用程序(Rich Internet Applications, RIA)...

    Flash+Flex+AIR移动开发入门经典

    《Flash+Flex+AIR移动开发入门经典》是一本专为初学者设计的教程,全面讲解了使用Adobe的Flash、Flex和AIR技术进行移动应用开发的知识体系。这本书旨在帮助读者掌握如何利用这些强大的工具来创建跨平台的交互式应用...

    flash+flex+air移动开发入门经典(3)源码

    《Flash + Flex + Air 移动开发入门经典》是一本旨在引导初学者进入移动应用开发领域的书籍,尤其关注使用Adobe的Flash、Flex和Air技术。本资源提供了该书第三部分的源码,分为Chapter 9和Chapter 8两个章节,由于...

    flex开发框架

    Flex开发框架是一个基于Adobe Flex技术的开发工具集,主要用于构建富互联网应用程序(Rich Internet Applications,简称RIA)。在本文中,我们将深入探讨Flex的核心概念、主要特点、开发环境以及如何使用Flex进行...

    Adobe AIR v32.0.0.125.zip

    Adobe Integrated Runtime (AIR) 是一个跨操作系统的运行时,利用现有的Web开发技术(Flash,Flex,HTML,JavaScript,Ajax)来构建富Internet应用程序并部署为桌面应用程序。AIR 支持现有的Web技术如Flash,Flex,HTML,...

    Flex4:开发RIA应用程序

    Flex4是Adobe公司推出的一个用于开发丰富互联网应用程序(Rich Internet Applications,简称RIA)的框架。RIA是指拥有桌面应用程序体验的网络应用程序,它能够提供响应快速、功能丰富并且更接近桌面软件用户体验的...

    FLEX提高篇--------AIR应用程序的托盘及托盘菜单的制作

    Flex是一款强大的开发框架,用于构建富互联网应用(RIA),而AIR(Adobe Integrated Runtime)则允许这些Flex应用运行在桌面环境中,提供与本地操作系统更紧密的交互。 标题中的"FLEX提高篇--------AIR应用程序的...

    flex air开发指南

    - **工具选择**:选择合适的 IDE,如 Adobe Animate CC、Adobe Flash Builder 或其他支持 Flex 和 AIR 的开发工具。 - **环境配置**:根据所选工具的要求进行环境配置,如设置路径变量等。 - **目标**:为后续开发...

    Flex 3 RIA开发详解与精深实践

    《Flex 3 RIA开发详解与精深实践》是一本深度探讨富互联网应用程序(RIA)开发的专著,特别关注Adobe Flex 3这一强大的开发框架。Flex 3是Adobe为构建交互性强、视觉效果丰富的Web应用程序提供的开源工具,它允许...

    Adobe Air Flex中文帮助

    它允许开发者使用Flex SDK和Flex Builder(现为Flash Builder)来构建具有丰富用户界面的Web应用,这些应用可以运行在Adobe AIR之上,实现桌面化功能。 标题"Adobe Air Flex中文帮助"表明这是一个专门针对中国用户...

    Flex_4:开发RIA_应用程序(中文版)

    通过以上知识点的介绍,我们可以看出《Flex 4:开发RIA应用程序》这本教材不仅覆盖了Flex框架的基础知识,还详细介绍了如何使用Adobe Flash Builder 4等工具来进行RIA的开发与部署。这对于希望深入了解Flex技术体系...

    Flex_4.0_RIA开发详解讲义.rar

    Flex 4.0是Adobe公司推出的富互联网应用(RIA)开发框架,主要应用于构建具有高度交互性和动态用户体验的Web应用程序。这份"Flex_4.0_RIA开发详解讲义"显然是一个详细的教程,旨在帮助开发者深入理解Flex 4.0平台的...

    Flex+4.0+RIA开发宝典-代码

    Flex 4.0是Adobe公司推出的富互联网应用(RIA)开发框架,它是ActionScript和Flash Player的高级开发工具,主要用于创建交互性强、视觉效果丰富的Web应用程序。RIA开发宝典是针对Flex 4.0深入学习的资源集合,旨在...

    ADOBEAIR完整入门与开发实录——使用FLEXFLASHAJAX开发AIR应用第01章-.pdf

    综上所述,本书《ADOBE AIR完整入门与开发实录——使用FLEX、FLASH、AJAX开发AIR应用》以理论与实践相结合的方式,细致地梳理了Adobe AIR开发平台的特性与优势,并对如何利用该平台开发RIA应用程序提供了详尽的指导...

Global site tag (gtag.js) - Google Analytics