<?xml version="1.0" encoding="utf-8"?> <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:parsley="http://www.spicefactory.org/parsley" xmlns:v="com.sununion.mobile.seller.view.*" creationComplete="windowedapplication_creationCompleteHandler(event)" addedToStage="addedToStageHandler(event)" minWidth="800" width="800" minHeight="600" height="600" > <fx:Declarations> <parsley:ContextBuilder> <parsley:FlexConfig type="{MyConfig}"/> </parsley:ContextBuilder> <parsley:Configure /> </fx:Declarations> <fx:Script> <![CDATA[ import com.sununion.mobile.seller.view.LoginView; import mx.core.Window; import mx.events.CloseEvent; import mx.events.FlexEvent; import mx.managers.PopUpManager; import spark.components.TitleWindow; import org.spicefactory.parsley.core.context.Context; private var win:TitleWindow = new TitleWindow(); [Inject] public var context:Context; private function showPopup() : void { // set properties win.addEventListener(CloseEvent.CLOSE, titleWindow_close); context.viewManager.addViewRoot(win); PopUpManager.addPopUp(win, this, true); PopUpManager.centerPopUp(win); } private function titleWindow_close(evt:CloseEvent):void { PopUpManager.removePopUp(win); } [Init] public function init():void{ showPopup(); var authWindow:Window = new Window(); authWindow.title = "Authenticate"; authWindow.systemChrome = NativeWindowSystemChrome.STANDARD; authWindow.type = NativeWindowType.NORMAL; authWindow.width = 600; authWindow.height = 800; context.viewManager.addViewRoot(authWindow); var auth:LoginView = new LoginView(); authWindow.addChild(auth); authWindow.open(true); } protected function windowedapplication_creationCompleteHandler(event:FlexEvent):void { } protected function addedToStageHandler(event:Event):void { } ]]> </fx:Script> </s:WindowedApplication>
在parsley框架下使用Flex的弹出窗口和原生的AIR窗口时,需要做一些处理使框架知道这些窗口的存在,如上述代码所示。原因是它们和主程序模块下的视图层次树是分离的。Flex Popup一般是在SystemManager下面的某个地方。而Native AIR Window甚至来自于自己的SystemManager。
参考:http://www.spicefactory.org/parsley/docs/2.0/manual/?page=roadmap§ion=intro