9RIA.com天地会 - 论坛

返回列表 发帖

天地培训

9RIA天地会官方培训机构

Adobe官方认证培训中心

[新闻资讯] [业界动态] 示范AIR2中的NativeProcess API

  • 资讯类型: 翻译
  • 来源页面: http://blogs.adobe.com/cantrell/archives/2009/11/demo_of_nativeprocess_apis.html
  • 资讯原标题: A Demonstration of the NativeProcess APIs in AIR 2
  • 资讯原作者: Christian Cantrell
  • 我的评论:
    对这篇文你有啥看法,跟贴说说吧!欢迎口水和板砖,哈哈。欢迎大家和我们一同分享更多资讯。

    Spotlight 是內建於 Mac OS X 的超快速搜尋技術,可輕鬆找到您所要尋找的內容,即使您不清楚該查看什麼位置也沒問題。

         SearchCentral采用了AIR2新的NativeProcess API,便于整合Spotlight ,并提供非常快速的本地文件系统搜索功能。
        NativeProcess API使用非常简单。基于苹果OS X系列,下面的代码调用mdfind命令,并设置读取结果的事件监听器。
    1. private function onSearch():void
    2. {
    3.     var npInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
    4.     npInfo.executable = this.mdfindFile; // A reference to the mdfind command
    5.     var args:Vector.<String> = new Vector.<String>;
    6.     args.push("-interpret");
    7.     args.push(this.searchTerm.text);
    8.     npInfo.arguments = args;
    9.     this.processBuffer = new ByteArray();
    10.     this.nativeProcess = new NativeProcess();
    11.     this.nativeProcess.addEvent
    12. Listener(ProgressEvent.STANDARD_OUTPUT_DATA, onStandardOutputData);
    13.     this.nativeProcess.addEventListener(NativeProcessExitEvent.EXIT, onStandardOutputExit);
    14.     this.setStatus("Searching for " + this.searchTerm.text + "...", true);
    15.     this.nativeProcess.start(npInfo);
    16. }
    复制代码
    下面的代码表示缓冲从标准输出的数据:
    1. private function onStandardOutputData(e:ProgressEvent):void
    2. {
    3.     this.nativeProcess.standardOutput.readBytes(this.processBuffer, this.processBuffer.length);
    4. }
    复制代码
    下面的函数是一个简化版本,它分析数据并放入表格中:
    1. private function onStandardOutputExit(e:Event):void
    2. {
    3.     var output:String = new String(this.processBuffer);
    4.     var outputArray:Array = output.split("\n");
    5.     var data:Array = new Array();
    6.     for each(var path:String in outputArray)
    7.     {
    8.         var f:File = new File(path);
    9.         if (!f.exists) continue;
    10.         var o:Object = new Object();
    11.         if (f.isDirectory)
    12.         {
    13.             o.name = "/" + f.name;
    14.         }
    15.         else
    16.         {
    17.             o.name = f.name;
    18.         }
    19.         o.type = f.extension;
    20.         o.lastModified = f.modificationDate;
    21.         o.path = f.nativePath;
    22.         data.push(o);
    23.     }
    24.     var dp:ArrayCollection = new ArrayCollection(data);
    25.     this.fileGrid.dataProvider = dp;
    26.     this.setStatus(dp.length + " items found");
    27. }
    复制代码
    SearchCentral代码将放到Adobe Labs上,要不了多久AIR 2 Beta也会发布出来了(很快!)。如果你有任何问题,请留下你的意见。
    1

    评分人数

    • 达达

    达达 赐本贴 威望 + 1 银子 + 20  诏曰:

    懒得令神发指

    天地人才库
    唉,那个演示看不到,路径也不对。这是地址:http://www.youtube.com/v/GbqmsJg ... amp;color2=0xcd311b
    懒得令神发指

    TOP

    唉,那个演示看不到,路径也不对。这是地址:http://www.youtube.com/v/GbqmsJg ... amp;color2=0xcd311b
    skylark14 发表于 2009-11-17 11:23

    其实地址没错,只是因为那个youtube的……- -

    TOP

    好兄弟,讲义气!---by eko

    踏上天地会荣耀之路!

     

    申请舵主

    加入掘金队

    加入译林军

    知识专题整理

     

    咨询(QQ):

    1442604479(小地)

     

    this.nativeProcess.addEventListener(NativeProcessExitEvent.EXIT, onStandardOutputExit);
    这个事件是流输出完成关闭执行还是程序退出执行?

    TOP

    返回列表