在Air程序中新建Window遇到一些问题,在网络中搜寻帮助之间。看到一篇名为Air的NativeWindow和Window的区别的博客,由此想记录两句。
本文作为一个笔记,用以后继自己查阅帮助使用,同时也是一个求教问题的文章,希望高手能帮我解答,问题在最后,非常感谢
在网络中经常见到说NativeWindow不能addChild Flex组件,此种说法是错误的,NativeWindow并非不能addChild Flex组件,而是NativeWindow addChild()之后,被add的child并不会被创建,组件虽然new出来了,可是不会被创建。也就是说已经被创建完成的组件是可以被add到NativeWindow中去的。
解决方案:new一个组件,把之PopUp出来, 等待其创建完成再add到NativeWindow中,就可以实现显示了。
但不推荐使用NativeWindow。
Flex提供了一个高级的窗口类mx.core.Window,此类是对NativeWindow的进一步封装。Window类实际就是一个WindowedApplication相同的概念,本身具有显示和创建功能,所以被add到Window中的组件会自动被创建完成。
Window具有WindowedApplication相同的属性和样式,在前文提到的博客中,说到Window有边框,不想要任何镶边,可以使用window.setStyle("showFlexChrome",false)解决。
Window.addChild() 的Flex组件最好是新new出来的,而不是在先前的WindowedApplication中实例化并创建,通过先去的parent.removeChild()后在Window.addChild(),会造成和此child对应的Application不是新创建的window,child中的弹出内容会继续在原窗口中弹出,比如toolTip就无法再新window中显示,而是显示在了WindowedApplication中。新new出来的组件add到window就可以避免这样的问题,PopUpManager,Alert弹出的时候,parent需要指向弹出窗口的内容,否则也会弹出到WindowedApplication中
目前还有一个问题没有得到解决:无法改变鼠标,通过cursorManager.setCursor,改变的鼠标无法显示。哪位高人知道怎么解决,求教了,非常感谢