永发信息网

求个AIR的右键菜单

答案:1  悬赏:80  手机版
解决时间 2021-05-01 13:53
  • 提问者网友:低吟詩仙的傷
  • 2021-04-30 22:31
求个AIR的右键菜单~~~~~~~~~~~~
最佳答案
  • 五星知识达人网友:思契十里
  • 2021-04-30 23:05

右键菜单:



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();


    }    不知道 是不是这个  累

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯