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>
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”