使用小结(1)
1、屏幕显示: 全屏状态: this.stage.displayState == "fullScreen" 最大化: stage.nativeWindow.maximize(); 最小化:同上使用 屏幕3显示判断: stage.displayState = (stage.displayState != "fullScreen")?"fullScreen":"normal"; 2、键盘事件: private function EscKey(evt:KeyboardEvent):void{ if (evt.keyCode == Keyboard.F1 && evt.ctrlKey == true) //同时响应两个热键,这里为ctrl+F1 if (evt.keyCode == Keyboard.ESCAPE) //相应一个键盘事件,这里为ESC } 3、控件与其父控件的大小 如下: //this.stage.displayState == "fullScreen"; ----------------2 var la:Label = new Label(); la.width=vb.width*0.9; vb.addChild(la); this.stage.displayState == "fullScreen"; ----------------------1 运行时,有可能当前显示的大小不对,这是Flex通常是normal下的格式,所以vb的width是在normal下大小,然后在全屏,此时,vb全屏了,可是vb的孩子la却还是当vb是normal下的width;应该修改为把1,放到2的位置,这样就ok了 4、Datagrid显示序号 <mx:DataGridColumn headerText="序号" labelFunction="GetOrder" width="50"/> <Script> private function GetOrder(item:Object,column:DataGridColumn):String{ var list:ArrayCollection = listPersons.dataProvider as ArrayCollection; var index:int = list.getItemIndex(item); return String(index+1); } </Script> 5、程序最小化隐藏显示在右下角,右键显示菜单,单击启动 private function init():void{ var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,prepareForSystray); loader.load(new URLRequest("assets/systray.png")); } private function windowClosing(evt:Event):void { evt.stopImmediatePropagation(); evt.stopPropagation(); evt.preventDefault(); dock(); } private function closeApp(evt:Event):void { this.exit(); } public function prepareForSystray(event:Event):void {
//Retrieve the image being used as the systray icon dockImage = event.target.content.bitmapData;
//For windows systems we can set the systray props //(there's also an implementation for mac's,it's similar and you can find it on the net... ;) ) if (NativeApplication.supportsSystemTrayIcon){ setSystemTrayProperties(); //Set some systray menu options,so that the user can right-click and access functionality //without needing to open the application SystemTrayIcon(NativeApplication.nativeApplication.icon).menu = createSystrayRootMenu(); } dock(); }
private function createSystrayRootMenu():NativeMenu{ //Add the menuitems with the corresponding actions var menu:NativeMenu = new NativeMenu(); var openNativeMenuItem:NativeMenuItem = new NativeMenuItem("显示"); var exitNativeMenuItem:NativeMenuItem = new NativeMenuItem("退出");
//What should happen when the user clicks on something... openNativeMenuItem.addEventListener(Event.SELECT,undock); exitNativeMenuItem.addEventListener(Event.SELECT,closeApp);
menu.addItem(openNativeMenuItem); menu.addItem(new NativeMenuItem("",true));//separator menu.addItem(exitNativeMenuItem);
return menu; }
private function setSystemTrayProperties():void{ //Text to show when hovering of the docked application icon SystemTrayIcon(NativeApplication.nativeApplication.icon).tooltip = "公告板程序";
//We want to be able to open the application after it has been docked SystemTrayIcon(NativeApplication.nativeApplication.icon).addEventListener(MouseEvent.CLICK,undock);
//Listen to the display state changing of the window,so that we can catch the minimize stage.nativeWindow.addEventListener(NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGING,nwMinimized); //Catch the minimize event } private function nwMinimized(displayStateEvent:NativeWindowDisplayStateEvent):void { if(displayStateEvent.afterDisplayState == NativeWindowDisplayState.MINIMIZED) { //Prevent the windowedapplication minimize action from happening and implement our own minimize //The reason the windowedapplication minimize action is caught,is that if active we're not able to //undock the application back neatly. The application doesn't become visible directly,but only after clicking //on the taskbars application link. (Not sure yet what happens exactly with standard minimize) displayStateEvent.preventDefault();
//Dock (our own minimize) dock(); } } public function dock():void { //Hide the applcation stage.nativeWindow.visible = false;
//Setting the bitmaps array will show the application icon in the systray NativeApplication.nativeApplication.icon.bitmaps = [dockImage]; ModelManager.SendMsg(ModelManager.BOARDOVER); }
public function undock(evt:Event):void { //After setting the window to visible,make sure that the application is ordered to the front, //else we'll still need to click on the application on the taskbar to make it visible stage.nativeWindow.visible = true; stage.nativeWindow.orderToFront(); stage.nativeWindow.activate(); //Clearing the bitmaps array also clears the applcation icon from the systray NativeApplication.nativeApplication.icon.bitmaps = []; this.stage.nativeWindow.maximize(); //this.stage.displayState = "fullScreen"; } 6、Flex显示的CSS(自定义的效果)效果必须定义在WindowedApplication中,其他地方不会显示的。 一个CSS效果:
<mx:Style> Alert { titleStyleName: "alertTitle"; messageStyleName: "alertMessage"; buttonStyleName: "alertButton"; dropShadowEnabled: true; shadowDistance: 5; shadowDirection: right; cornerRadius: 5; background-color: #E9FFEA; }
.alertTitle { letterSpacing: 0; fontSize: 16; color: red; }
.alertMessage { letterSpacing: 0; fontSize: 16; fontWeight: normal; color: black; }
.alertButton { letterSpacing: 0; fontSize: 16; cornerRadius: 10; fontWeight: normal; }
ToolTip { fontSize: 14; fontWeight: normal; backgroundColor: #22DD00; dropShadowEnabled: true; }
.body { font-size: 12px; font-family: Arial,Helvetica,sans-serif; filter: style=1,startY=0,finishY=100,startX=100,finishX=100; background-color: #666666; }
</mx:Style> Flex自带的名称前面不加“.”,如果想要引用自定义css,则前面加“.”,然后在相应属性的stylename=“body” (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |