10.2 创建窗体

创建窗体

AIR 主要提供了下列方法用于创建程序窗体:

  •  AIR 自动为每个程序创建第一个窗体。这个窗体根据应用程序描述文件设置进行初始化。如果root上下文已经在描述文件里定义,那么就可以通过Stage.window属性NativeWindow API来访问window实例的属性和方法。另外,SWF文件的主类必须继承Sprite或Sprite的子类(WindowedApplication和Application组件都是Sprite之类) 如果root上下文是一个HTML文件,这可通过JavaScript Window 对象访问window的属性和方法。
  •  可以创建NativeWindow类实例,通过NativeWindowInitOptions 对象实例作为NativeWindows构造函数的参数进行初始化。可直接通过该对象来访问属性和方法。
  •  可以使用HTML组件的createRootWindow() 方法创建一个窗体用于显示HTML内容。
  •  还可以使用JavaScript Window.open() 方法通过javascript打开一个新窗体。JavaScript创建的窗体只能通过javascript访问其属性和方法,且该窗体只能显示HTML内容。

创建一个新的本地窗体(NativeWindow

要创建一个新的NativeWindow,可先创建一个NativeWindowInitOptions对象并传递给NativeWindow 构造函数。

var options:NativeWindowInitOptions = new NativeWindowInitOptions(); 

options.systemChrome = NativeWindowSystemChrome.STANDARD; 

options.transparent = false; 

var newWin:NativeWindow = new NativeWindow(false, options); 

NativeWindow构造函数第一个参数指定是否创建时立即显示该窗体,为了避免显示出如设置大小,位置和内容时窗体所处的中间状态,当你完成窗体初始化后,设置NativeWindow.visible 属性为true。第二个参数为NativeWindowInitOptions对象,该对象用于设置窗体的属性,一旦窗体创建后将不能更改。

注意:设置systemChrome="standard" 和transparent="true" 这种组合不支持。

一旦窗体被创建,你可以用stage属性和Flash显示列表初始化一些属性并载入内容到窗体之上。

注意:要确定操作系统窗体的最大化和最小化大小,可通过NativeWindowCapabilities类得到:

var maxOSSize:Point = NativeWindowsCapabilites.windowMaxSize; 

var minOSSize:Point = NativeWindowsCapabilites.windowMinSize; 

 

往窗体中添加内容

要添加内容到本地窗体上,可通过窗体的stage来添加可视化对象。你可以动态创建可视化对象或者通过flash.display.Loader类载入现成的内容。对于HTML窗体,可通过location属性来改变加载的内容或插入HTML内容到DOM。

当你载入包含JavaScript的SWF或HTML内容时必须要考虑到AIR安全模型。任何安全沙箱中的程序,无论是安装的内容或通过url载入的资源都有能力访问到AIR APIs,任何从沙箱外部载入的内容在访问受安全约束的AIR APIs和跨脚本内容时将受到限制。应用程序安全沙箱外部的JavaScript内容将不能使用JavaScript窗体对象的nativeWindow或htmlControl属性。

要想允许安全跨脚本访问,你可以使用flash.system.Door API创建一个严格受限的通讯网关,它提供有限的接口用于程序内容和非程序内容之间的访问。

载入一个SWF 或 图片

 

可以使用flash.display.Loader类载入flash或图片到本地窗体的显示列表上。

package  

    
import flash.display.Sprite; 

    
import flash.events.Event; 

    
import flash.net.URLRequest; 

    
import flash.display.Loader; 


    
public class LoadedSWF extends Sprite 

    


        
public function LoadedSWF()

            var loader:Loader 
= new Loader(); 

            loader.load(
new URLRequest("visual.swf"));                    

            loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadFlash); 

        }
 


        
private function loadFlash(event:Event):void

            addChild(event.target.loader);  

        }
 

    }
 

}
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值