AIR 教程

  • 格式:doc
  • 大小:413.50 KB
  • 文档页数:13

AIR教程

Adobe AIR右键菜单和系统托盘(Tray)功能以及实现方法

右键菜单:

var mainMenu:NativeMenu = new NativeMenu();

var minimizeMenu:NativeMenuItem = new NativeMenuItem("Minimize");

var maximizeMenu:NativeMenuItem = new NativeMenuItem("Maximize");

var sepMenu:NativeMenuItem = new NativeMenuItem("",true);

var restoreMenu:NativeMenuItem = new NativeMenuItem("Restore");

var closeMenu:NativeMenuItem = new NativeMenuItem("Close");

minimizeMenu.addEventListener(Event.Select, handleMenuClick);

maximizeMenu.addEventListener(Event.Select, handleMenuClick);

restoreMenu.addEventListener(Event.Select, handleMenuClick);

closeMenu.addEventListener(Event.Select, handleMenuClick);

mainMenu.addItem(minimizeMenu);

mainMenu.addItem(maximizeMenu);

mainMenu.addItem(sepMenu);

mainMenu.addItem(restoreMenu);

mainMenu.addItem(closeMenu);

this.contextMenu=mainMenu;

系统托盘:

var sysTray:SystemTrayIcon =

NativeApplication.nativeApplication.icon as SystemTrayIcon;

sysTray.tooltip = "测试tray";

//

sysTray.menu = this.contextMenu;

sysTray.addEventListener(MouseEvent.CLICK,trayClick);

如何将应用程序最小化到托盘,然后给托盘图标加右键菜单以及添加相应的事件,来激活应用程序窗体.

整个流程:

1. 初始化应用时改变系统默认情况下以系统X事件的处理.

2. 定义新处理逻辑(本文是弹出对话框)

3. 生成托盘图标并置于状态栏

4. 给托盘图标加上右键菜单(本文是exit,和open两项)

5. 给菜单加上相应的事件

6. 大功告成

主要方法:

1. private var dockImage:BitmapData;

2.

3. //初始化Application里调用此方法,完成上面的第一步:

4. public function initApplication():void{

5. var loader:Loader=new Loader();

6. loader.contentLoaderInfo.addEventListener(PLETE,prepareForSystray);//这里就是完成第一步的任务须,这个prepareForSystray就是对托盘的生在和菜单的控制

7. loader.load(new URLRequest("assets/images/32.png"));//这里先要加载托盘图标的小图片

8. this.addEventListener(Event.CLOSING,closingApplication);//设置关闭体的事件

9. }

10.

11. //关闭窗体的事件

12. public function closingApplication(event:Event):void{

13. event.preventDefault();//阻止默认的事件

14. Alert.yesLabel="Close";

15. Alert.noLabel="Mini";

16. Alert.show("Close or Minimize?", "Close?", 3, this, alertCloseHandler);//弹出自定义的选择框, 关于Alert的详细用法,参考官方文档或我前面的相关文章. 17. }

18. //根据用户的选择来判断做什么,这里选择是就是关闭,选择否(Mini)就是最小化到托盘.

19. private function alertCloseHandler(event:CloseEvent):void{

20. if(event.detail==Alert.YES){

21. closeApp(event);

22. }else{

23. dock();//最小化到托盘

24. }

25. }

26.

27. //生成托盘

28. public function prepareForSystray(event:Event):void{

29. dockImage=event.target.content.bitmapData;

30. if(NativeApplication.supportsSystemTrayIcon){

31. setSystemTrayProperties();//设置托盘菜单的事件

32. SystemTrayIcon(NativeApplication.nativeApplication.icon).menu=createSystrayRootMenu();//生成托盘菜单

33. }

34. }

35.

36. public function createSystrayRootMenu():NativeMenu{

37. var menu:NativeMenu = new NativeMenu();

38. var openNativeMenuItem:NativeMenuItem = new NativeMenuItem("Open");//生成OPEN菜单项

39. var exitNativeMenuItem:NativeMenuItem = new NativeMenuItem("Exit");//同理

40. openNativeMenuItem.addEventListener(Event.SELECT, undock);

41. exitNativeMenuItem.addEventListener(Event.SELECT, closeApp);//添加EXIT菜单项事件

42. menu.addItem(openNativeMenuItem);

43. menu.addItem(new NativeMenuItem("",true));//separator

44. menu.addItem(exitNativeMenuItem);//将菜单项加入菜单

45.

46. return menu;

47.

48. }

49. //设置托盘图标的事件

50. private function setSystemTrayProperties():void{

51. SystemTrayIcon(NativeApplication.nativeApplication .icon).tooltip = "TurboSquid squidword";

52. SystemTrayIcon(NativeApplication.nativeApplication .icon).addEventListener(MouseEvent.CLICK, undock); 53. stage.nativeWindow.addEventListener(NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGING, nwMinimized);

54.

}

55.

56. //最小化 窗体

57. private function nwMinimized(displayStateEvent:NativeWindowDisplayStateEvent):void {

58. if(displayStateEvent.afterDisplayState == NativeWindowDisplayState.MINIMIZED)

{

59. displayStateEvent.preventDefault();//阻止系统默认的关闭窗体事件

60. dock();//将程序放入托盘

61. }