Adobe AIR右键菜单和系统托盘实现
2011-03-16 09:48
447 查看
右键菜单:
系统托盘:
如何将应用程序最小化到托盘,然后给托盘图标加右键菜单以及添加相应的事件,来激活应用程序窗体.
整个流程:
1. 初始化应用时改变系统默认情况下以系统X事件的处理.
2. 定义新处理逻辑(本文是弹出对话框)
3. 生成托盘图标并置于状态栏
4. 给托盘图标加上右键菜单(本文是exit,和open两项)
5. 给菜单加上相应的事件
6. 大功告成
主要方法:
]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. 大功告成
主要方法:
private var dockImage:BitmapData; //初始化Application里调用此方法,完成上面的第一步: public function initApplication():void{ var loader:Loader=new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,prepareForSystray);//这里就是完成第一步的任务须,这个prepareForSystray就是对托盘的生在和菜单的控制 loader.load(new URLRequest("assets/images/32.png"));//这里先要加载托盘图标的小图片 this.addEventListener(Event.CLOSING,closingApplication);//设置关闭体的事件 } //关闭窗体的事件 public function closingApplication(event:Event):void{ event.preventDefault();//阻止默认的事件 Alert.yesLabel="Close"; Alert.noLabel="Mini"; Alert.show("Close or Minimize?", "Close?", 3, this, alertCloseHandler);//弹出自定义的选择框, 关于Alert的详细用法,参考官方文档或我前面的相关文章. } //根据用户的选择来判断做什么,这里选择是就是关闭,选择否(Mini)就是最小化到托盘. private function alertCloseHandler(event:CloseEvent):void{ if(event.detail==Alert.YES){ closeApp(event); }else{ dock();//最小化到托盘 } } //生成托盘 public function prepareForSystray(event:Event):void{ dockImage=event.target.content.bitmapData; if(NativeApplication.supportsSystemTrayIcon){ setSystemTrayProperties();//设置托盘菜单的事件 SystemTrayIcon(NativeApplication.nativeApplication.icon).menu=createSystrayRootMenu();//生成托盘菜单 } } public function createSystrayRootMenu():NativeMenu{ var menu:NativeMenu = new NativeMenu(); var openNativeMenuItem:NativeMenuItem = new NativeMenuItem("Open");//生成OPEN菜单项 var exitNativeMenuItem:NativeMenuItem = new NativeMenuItem("Exit");//同理 openNativeMenuItem.addEventListener(Event.SELECT, undock); exitNativeMenuItem.addEventListener(Event.SELECT, closeApp);//添加EXIT菜单项事件 menu.addItem(openNativeMenuItem); menu.addItem(new NativeMenuItem("",true));//separator menu.addItem(exitNativeMenuItem);//将菜单项加入菜单 return menu; } //设置托盘图标的事件 private function setSystemTrayProperties():void{ SystemTrayIcon(NativeApplication.nativeApplication .icon).tooltip = "TurboSquid squidword"; SystemTrayIcon(NativeApplication.nativeApplication .icon).addEventListener(MouseEvent.CLICK, undock); stage.nativeWindow.addEventListener(NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGING, nwMinimized); } //最小化窗体 private function nwMinimized(displayStateEvent:NativeWindowDisplayStateEvent):void { if(displayStateEvent.afterDisplayState == NativeWindowDisplayState.MINIMIZED) { displayStateEvent.preventDefault();//阻止系统默认的关闭窗体事件 dock();//将程序放入托盘 } } //将本地应用程序放到托盘 public function dock():void { stage.nativeWindow.visible = false; //设置本地程序窗体不可见 NativeApplication.nativeApplication.icon.bitmaps = [dockImage];//设置托盘的图标 } //激活程序窗体 public function undock(evt:Event):void { stage.nativeWindow.visible = true;//设置本地程序窗体可见 stage.nativeWindow.orderToFront();//设置本地程序窗体到最前端 NativeApplication.nativeApplication .icon.bitmaps = [];//将托盘图标清空 } //关闭程序窗体 private function closeApp(evt:Event):void { stage.nativeWindow.close(); }
相关文章推荐
- Adobe AIR右键菜单和系统托盘(Tray)功能以及实现方
- Adobe AIR右键菜单和系统托盘(Tray)功能以及实现方法
- Adobe AIR右键菜单和系统托盘(Tray)功能以及实现方法
- Adobe AIR右键菜单和系统托盘(Tray)功能以及实现方法
- Adobe AIR添加右键菜单和系统托盘(Tray).
- FireEvent结合WSH实现右键菜单操作
- linux下QT界面的treewiget控件的右键菜单的实现
- js+css实现带缓冲效果右键弹出菜单
- PyQt 右键菜单的实现(Qt.CustomContextMenu方式)
- Qt:QListWidget的item上实现右键菜单(空白的地方)
- Ext4右键菜单实现
- jQuery实现漂亮的指定区域内鼠标右键关联菜单可自定义图标
- VC鼠标右键弹出菜单的实现(转)
- Qt实现右键菜单的五种方法!(以QListWidget为例)
- 用java实现右键菜单
- js(jquery)右键菜单插件的实现
- Popup对象实现右键菜单
- MFC 实现richedit右键菜单的复制粘贴功能
- Extjs实现菜单下拉和鼠标右键菜单(加入系统菜单权限判断,有权限则显示,无反之)
- js实现右键弹出多级菜单特效