推荐原因:在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应用中实现自定义窗口,首先需要理解`NativeWindow`类。这个类是所有AIR桌面窗口的基础,它提供了创建、显示、隐藏、最大化、最小化和关闭窗口的方法。开发者可以利用`NativeWindowInitOptions`来设置...
Flex4和Adobe AIR是开发跨平台桌面应用的框架和技术,它们允许开发者利用ActionScript和Flash技术构建具有丰富用户界面的应用程序。在这个特定的项目中,"Flex4 Air 多窗口 自动更新" 提到了几个关键知识点,让我们...
Flex3Air是一款基于Adobe Flex 3技术开发的桌面应用程序,它可以提供丰富的用户界面和交互体验。"Flex3Air最小化到系统托盘"这个主题主要涉及的是如何在Flex3Air应用中实现窗口最小化功能,并将应用程序图标隐藏到...
标题中的“用Flex AIR 做一个类似QQ消息提示在系统托盘闪烁图标”表明了这个项目是关于使用Adobe Flex和Adobe Integrated Runtime (AIR) 开发一个功能,该功能模仿了腾讯QQ的消息提示方式,即当有新消息时,系统托盘...
Flash是一种广泛用于创建动态内容和互动体验的平台,而Flex和AIR则分别是基于ActionScript和Flash Player的开发框架和运行环境,它们主要用于构建富互联网应用程序(RIA)。在Flex中,开发者可以使用MXML和...
- **NativeWindow:**用于创建和控制原生窗口。 **具有特定于AIR功能的Flash Player 类:** - 这些类通常用于增强Flash Player的功能,使其能够更好地适应桌面应用程序的需求。 - 例如:`System` 类提供有关AIR运行...
这个XML文件的结构和属性直接影响着AIR应用的安装、运行和用户体验。 `<id>`标签定义了应用的唯一标识符,通常采用反向DNS格式(如com.example.MyApp),确保在全球范围内的唯一性。 `<filename>`定义了安装后在...
在Flex中,我们可以使用NativeApplication类的nativeWindow属性来访问AIR的桌面特性,如托盘图标。 在AIR中实现托盘菜单通常涉及以下步骤: 1. **创建托盘图标**:首先,你需要创建一个NativeMenu对象,这是托盘...
在Flex中,可以使用NativeWindow API来实现这个功能,通过监听窗口状态改变的事件,当窗口被最小化时,将其图标移至系统托盘,并保持其可操作性。 4. **打开和保存文件**:作为一款记事本应用,必须具备读写文件的...
在AIR中,可以使用`NativeWindow`类来创建和控制窗口,并使用`NativeWindowSystemChrome`属性来决定是否显示标准的系统边框和标题栏,以达到类QQ消息提示窗体的无边框效果。 在DCRM项目中,可能包含了实现这些功能...
Kinect4AirSDK是微软官方Kinect SDK的一个抽象和简化版本,它为Air程序提供了ANE(Adobe Native Extension)拓展,便于开发者进行Flash 2D游戏等应用的开发。在本文中,将详细介绍如何使用Kinect4AirSDK,包括硬件...