skip to main |skip to sidebar

2007-04-29

Apollo的核心 - Shell类

Shell是连接Apollo程序和OS的对象。根据官方文档,虽然今后很有可能会变更它的方法,但还是把他的核心说一下。

因为Shell对象会在程序启动时自动生成,所以不需要在程序中创建。它是一个单例对象(Singleon),用 Shell.shell 来访问。

Shell类的属性和方法

Shell类的属性列表:

Code:
id:String                 // 程序的ID
activeWindow:NativeWindow // 现在活动的窗口
focusWindow:NativeWindow  // 现在拥有焦点的窗口
autoExit:Boolean          // 如果是true,就在关闭了所有窗口时结束程序

id是程序配置文件(程序名-app.xml)的name标签的值。id是程序的标志符,必须与其他的程序的不一样。所以推荐使用类似于"com.sample.apollo.ApplicationName"的名字。能在id里使用的字符是英数字,"."和"-"。

activeWindow是现在活动的窗口,focusWindow是现在拥有焦点的窗口。如果对象窗口不是属于Shell(不是Apollo打开的窗口)的话,会是 null

autoExit值为 true (默认值)时,就在关闭了所有窗口时结束程序; false 时必须调用Shell.shell.exit()来结束程序。但由于Alpha版的BUG,即时调用exit()也不会结束程序。所以至少在Alpha版里最好不要碰autoExit

注意,在事件里调用exit()时不会马上结束程序,而是在事件处理完了的时候结束。

Shell类的事件

Shell类的事件定义如下:

Code:
activate      // 当程序变为活动时
deactivate    // 当程序变为非活动时
invoke        // 当程序启动时
networkChange // 当网络链接发生变化时

activate是当程序变为活动时,deactivate是当程序变为非活动时触发的事件。Alpha版好像activatedeactivate事件只触发于最初打开的窗口。

Invoke是当程序启动时触发。这个事件会保存直到添加了听诊器(Listener)为止,所以可以在程序启动后处理的。

Inboke事件类型是InvokeEvent。它拥有以下2个属性:

Code:
arguments:Array // 启动时给与的参数列表
currentDirectory:File // 参数里有相对路径的基准路径(绝对路径 = 基准路径 + 相对路径)

注意,Apollo不能同时启动一个程序数次。在第2次程序启动时,会触发第1次启动的程序的Inboke事件。

最后一个networkChange事件当网络链接发生变化时触发。比如网线断开了。

1 条评论:

匿名 说...

你的链接加上了,Flex类的一定通过,呵呵。

By Dreamer