`

Flex:Air的NativeWindow和Window的区别(留意原文的右侧Flash标签云,酷)

阅读更多

推荐原因:在Air窗口中写HtmlTex用到。

由于小软件开发到后期的时候发现自己的美术功底实在不够,于是将程序转为用Flash builder4 beta2开发。但是由于之前几乎没用过Flex开发过任何东西,因此不会Flex,所以在用Flash builder4 beta开发的时候遇到一些问题,解决过程中很是恼火,其中关于打开新窗口的问题很是纠结。

在开发AIR的过程中,不免要打开一个主程序窗口之外的窗口,这时候有3个方法打开新窗口,分别为NativeWindow和Window。事实上通用的方式使用NativeWindow,而Window是一个Flex封装的方法,被封装在mx.core.Window中,并且内部引用了NativeWindow方法,而createRootWindow则是创建一个基于HTML的窗口。而在使用3个方法的时候,NativeWindow的DIY空间更大,但是它有一个很烦的局限性,那就是不能直接加入Flex组件,只能加入外部Loader进来的SWF或其他元素。

下面只讨论前两种方法。由于插件问题,代码中所有半角双引号都被替换为了:"字符。为了避免错误,如要复制代码,请使用代码块上方的工具,点击“view code”可以在新视窗中查看完整无错代码,然后在此视窗复制即可。

用NativeWindow对象创建新窗口如下:

       var options:NativeWindowInitOptions = new NativeWindowInitOptions();
       options.transparent = true;//true/false
       options.systemChrome = NativeWindowSystemChrome.NONE;//none/STANDARD
       options.type = NativeWindowType.UTILITY;//type="utility";//"normal"//"lightweight"//"utility"
       newWindow= new NativeWindow(options);
       newWindow.title = "新窗口";
       newWindow.stage.align = StageAlign.TOP_LEFT;
       newWindow.stage.scaleMode = StageScaleMode.NO_SCALE;
       newWindow.activate();

在使用该方法的时候,你不能向newWindow里面添加任何按钮、DateChooser之类的Flex 组件,但是你可以像新窗口的舞台对象里面添加外部加载SWF和Image等元素,具体方法为:newWindow.stage.addChild(someSprite)。

那么如何在新窗口中动态加入Flex 组件?使用Window方法。代码如下:

	var newWindow:Window=new Window();
        var datePicker:DateChooser=new DateChooser();
	newWindow.transparent=true;
	newWindow.type=NativeWindowType.UTILITY;
	newWindow.systemChrome=NativeWindowSystemChrome.NONE;
	newWindow.addChild(datePicker);
	newWindow.title="新窗口";
	newWindow.height=300;
	newWindow.width=300;
	newWindow.open(true);

在new一个Window之前,你需要导入该包:import mx.core.Window;(Flash builder4下)。在使用Window方法创建新窗口的时候,可以将其transparent属性设置为true和flase,在设置该属性的时候必须保证open方法未调用才能成功,open方法一旦调用,该属性会被设置为只读。设置为false的时候新窗口将被系统镶边,而设置为true的时候与NativeWindow不同是这时进行组件镶边,即是会自动使用Window内建的UI镶边,而NativeWindow的transparent被设置为true的时候,是没有任何镶边的。在这一点上我很是恼火,因为我既想在新窗口中使用Flex组件,又不想有任何镶边,于是只有兴叹鱼和熊掌不可兼得……

如何让鱼和熊掌兼得,本人继续探索中……

补:后来在一个技术群里面说到这个问题的时候,一个网友提供了这种方法让NativeWindow加入Flex组建的方法,即是先New一个Flex组件,等待改组件创建完成后将Flex组件加入到WindowAppliction里面,再加入到NativeWindow窗口中:

	var options:NativeWindowInitOptions = new NativeWindowInitOptions();
	options.transparent = true;//true/false
	options.systemChrome = NativeWindowSystemChrome.NONE;//none/STANDARD
	options.type = NativeWindowType.UTILITY;//type="utility";//"normal"//"lightweight"//"utility"
	newWindow= new NativeWindow(options);
	newWindow.title = "新窗口";
	newWindow.stage.align = StageAlign.TOP_LEFT;
	newWindow.stage.scaleMode = StageScaleMode.NO_SCALE;
	newWindow.activate();
				
	datePicker=new DateChooser();
	this.addElement(datePicker);

	datePicker.addEventListener(FlexEvent.CREATION_COMPLETE,cp);
	
	function cp(e:FlexEvent):void{
		newWindow.stage.addChild(datePicker);
		datePicker.visible=true;
	}


分享到:
评论

相关推荐

    Flex4 Air 自定义窗口

    在Flex4 AIR应用中实现自定义窗口,首先需要理解`NativeWindow`类。这个类是所有AIR桌面窗口的基础,它提供了创建、显示、隐藏、最大化、最小化和关闭窗口的方法。开发者可以利用`NativeWindowInitOptions`来设置...

    Flex4 Air 多窗口 自动更新

    Flex4和Adobe AIR是开发跨平台桌面应用的框架和技术,它们允许开发者利用ActionScript和Flash技术构建具有丰富用户界面的应用程序。在这个特定的项目中,"Flex4 Air 多窗口 自动更新" 提到了几个关键知识点,让我们...

    Flex3Air最小化到系统托盘

    Flex3Air是一款基于Adobe Flex 3技术开发的桌面应用程序,它可以提供丰富的用户界面和交互体验。"Flex3Air最小化到系统托盘"这个主题主要涉及的是如何在Flex3Air应用中实现窗口最小化功能,并将应用程序图标隐藏到...

    用Flex AIR 做一个类似QQ消息提示在系统托盘闪烁图标

    标题中的“用Flex AIR 做一个类似QQ消息提示在系统托盘闪烁图标”表明了这个项目是关于使用Adobe Flex和Adobe Integrated Runtime (AIR) 开发一个功能,该功能模仿了腾讯QQ的消息提示方式,即当有新消息时,系统托盘...

    flash/flex/air的一个大问题

    Flash是一种广泛用于创建动态内容和互动体验的平台,而Flex和AIR则分别是基于ActionScript和Flash Player的开发框架和运行环境,它们主要用于构建富互联网应用程序(RIA)。在Flex中,开发者可以使用MXML和...

    Flex4.5中air桌面应用 app.xml 配置文件中文注释

    这个XML文件的结构和属性直接影响着AIR应用的安装、运行和用户体验。 `<id>`标签定义了应用的唯一标识符,通常采用反向DNS格式(如com.example.MyApp),确保在全球范围内的唯一性。 `<filename>`定义了安装后在...

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

    在Flex中,我们可以使用NativeApplication类的nativeWindow属性来访问AIR的桌面特性,如托盘图标。 在AIR中实现托盘菜单通常涉及以下步骤: 1. **创建托盘图标**:首先,你需要创建一个NativeMenu对象,这是托盘...

    基于Flex3的透明记事本源码

    在Flex中,可以使用NativeWindow API来实现这个功能,通过监听窗口状态改变的事件,当窗口被最小化时,将其图标移至系统托盘,并保持其可操作性。 4. **打开和保存文件**:作为一款记事本应用,必须具备读写文件的...

    AIR桌面应用(自定义任务栏图标、类QQ消息提示窗体)

    在AIR中,可以使用`NativeWindow`类来创建和控制窗口,并使用`NativeWindowSystemChrome`属性来决定是否显示标准的系统边框和标题栏,以达到类QQ消息提示窗体的无边框效果。 在DCRM项目中,可能包含了实现这些功能...

    Kinect教程

    Kinect4AirSDK是微软官方Kinect SDK的一个抽象和简化版本,它为Air程序提供了ANE(Adobe Native Extension)拓展,便于开发者进行Flash 2D游戏等应用的开发。在本文中,将详细介绍如何使用Kinect4AirSDK,包括硬件...

Global site tag (gtag.js) - Google Analytics