Shell是连接Apollo程序和OS的对象。根据官方文档,虽然今后很有可能会变更它的方法,但还是把他的核心说一下。
因为Shell对象会在程序启动时自动生成,所以不需要在程序中创建。它是一个单例对象(Singleon),用 Shell.shell
来访问。
Shell类的属性和方法
Shell类的属性列表:
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类的事件定义如下:
activate // 当程序变为活动时
deactivate // 当程序变为非活动时
invoke // 当程序启动时
networkChange // 当网络链接发生变化时
activate是当程序变为活动时,deactivate是当程序变为非活动时触发的事件。Alpha版好像activate和deactivate事件只触发于最初打开的窗口。
Invoke是当程序启动时触发。这个事件会保存直到添加了听诊器(Listener)为止,所以可以在程序启动后处理的。
Inboke事件类型是InvokeEvent。它拥有以下2个属性:
arguments:Array // 启动时给与的参数列表
currentDirectory:File // 参数里有相对路径的基准路径(绝对路径 = 基准路径 + 相对路径)
注意,Apollo不能同时启动一个程序数次。在第2次程序启动时,会触发第1次启动的程序的Inboke事件。
最后一个networkChange事件当网络链接发生变化时触发。比如网线断开了。
1 条评论:
你的链接加上了,Flex类的一定通过,呵呵。
By Dreamer
发表评论