air仿QQ弹出提示窗口

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"  
  3.     applicationComplete="initApplication()" 
  4.     layout="absolute" 
  5.     verticalAlign="top" 
  6.     horizontalAlign="left"
  7.      width="250"
  8.       height="200">
  9.     <mx:Script>
  10.         <![CDATA[
  11.             import flash.net.*
  12.             import flash.events.*
  13.             import flash.display.*
  14.             import mx.events.*
  15.             import mx.controls.*
  16.             import flash.system.*;
  17.             import mx.core.*
  18.             import flash.utils.Timer
  19.             
  20.         private var dockImage:BitmapData;   
  21.                
  22.         //初始化Application里调用此方法,完成上面的第一步:   
  23.       public function initApplication():void{   
  24.                 var loader:Loader=new Loader();   
  25.                 loader.contentLoaderInfo.addEventListener(Event.COMPLETE,prepareForSystray);//这里就是完成第一步的任务须,这个prepareForSystray就是对托盘的生在和菜单的控制   
  26.                 loader.load(new URLRequest("a.jpg"));//这里先要加载托盘图标的小图片   
  27.                 this.addEventListener(Event.CLOSING,closingApplication);//设置关闭体的事件   
  28.                 
  29.                 this.horizontalScrollPolicy=ScrollPolicy.OFF
  30.                 this.verticalScrollPolicy=ScrollPolicy.OFF
  31.             }   
  32.            //生成托盘   
  33.         public function prepareForSystray(event:Event):void{   
  34.             dockImage=event.target.content.bitmapData;   
  35.             if(NativeApplication.supportsSystemTrayIcon){   
  36.                setSystemTrayProperties();//设置托盘菜单的事件   
  37.                SystemTrayIcon(NativeApplication.nativeApplication.icon).menu=createSystrayRootMenu();//生成托盘菜单   
  38.             }      
  39.         }     
  40.         //关闭窗体的事件   
  41.       public function closingApplication(event:Event):void{   
  42.                 /*event.preventDefault();//阻止默认的事件   
  43.                 Alert.yesLabel="Close";   
  44.                 Alert.noLabel="Mini";   
  45.                 Alert.show("Close or Minimize?", "Close?", 3, this, alertCloseHandler);//弹出自定义的选择框, 关于Alert的详细用法,参考官方文档或我前面的相关文章.   
  46.                 */
  47.             }   
  48.         //根据用户的选择来判断做什么,这里选择是就是关闭,选择否(Mini)就是最小化到托盘.   
  49.         private function alertCloseHandler(event:CloseEvent):void{   
  50.             if(event.detail==Alert.YES){   
  51.                 closeApp(event);   
  52.             }else{   
  53.                 dock();//最小化到托盘   
  54.             }   
  55.         }   
  56.         public function createSystrayRootMenu():NativeMenu{   
  57.             var menu:NativeMenu = new NativeMenu();   
  58.             var openNativeMenuItem:NativeMenuItem = new NativeMenuItem("Open");//生成OPEN菜单项   
  59.             var exitNativeMenuItem:NativeMenuItem = new NativeMenuItem("Exit");//同理   
  60.             openNativeMenuItem.addEventListener(Event.SELECT, undock);   
  61.             exitNativeMenuItem.addEventListener(Event.SELECT, closeApp);//添加EXIT菜单项事件   
  62.             menu.addItem(openNativeMenuItem);   
  63.             menu.addItem(new NativeMenuItem("",true));//separator    
  64.             menu.addItem(exitNativeMenuItem);//将菜单项加入菜单   
  65.             return menu;   
  66.         }   
  67.         //设置托盘图标的事件   
  68.         private function setSystemTrayProperties():void{   
  69.             SystemTrayIcon(NativeApplication.nativeApplication .icon).tooltip = "TurboSquid squidword";   
  70.             SystemTrayIcon(NativeApplication.nativeApplication .icon).addEventListener(MouseEvent.CLICK, undock);   
  71.             stage.nativeWindow.addEventListener(NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGING, nwMinimized);    
  72.         }   
  73.        //最小化窗体   
  74.         private function nwMinimized(displayStateEvent:NativeWindowDisplayStateEvent):void {   
  75.             if(displayStateEvent.afterDisplayState == NativeWindowDisplayState.MINIMIZED) {   
  76.                 displayStateEvent.preventDefault();//阻止系统默认的关闭窗体事件   
  77.                 dock();//将程序放入托盘   
  78.             }   
  79.         }   
  80.   
  81.         //将本地应用程序放到托盘   
  82.         public function dock():void {   
  83.             stage.nativeWindow.visible = false//设置本地程序窗体不可见   
  84.             NativeApplication.nativeApplication.icon.bitmaps = [dockImage];//设置托盘的图标   
  85.            
  86.             var mytimer:Timer=new Timer(60000, 0)
  87.             mytimer.addEventListener(TimerEvent.TIMER,timerEvent)
  88.             mytimer.start()
  89.         }   
  90.         function timerEvent(e:TimerEvent):void{
  91.            
  92.            undock(null)
  93.            
  94.            }
  95.         //还原
  96.         function goback(evt:Event):void{
  97.         
  98.         
  99.         
  100.         
  101.         
  102.             }
  103.         //定时提醒
  104.         public function undock(evt:Event):void {   
  105.        //NativeApplication.nativeApplication.icon.bitmaps= [];//将托盘图标清空   
  106.          
  107.         this.addEventListener(Event.ENTER_FRAME,Event_ENTER_FRAME)
  108.         
  109.         stage.nativeWindow.width=200
  110.         stage.nativeWindow.height=200
  111.         
  112.         stage.nativeWindow.x=Capabilities.screenResolutionX-stage.nativeWindow.width
  113.         stage.nativeWindow.y=Capabilities.screenResolutionY-stage.nativeWindow.height
  114.         
  115.         myWindow=deChromeWindow(stage.nativeWindow)
  116.         myWindow.visible=true
  117.        
  118.         pan.width= myWindow.width
  119.         pan.height= myWindow.height
  120.             
  121.             pan.x=0
  122.             pan.y=0
  123.             
  124.             pan.title="测试"
  125.             
  126.             pan.addEventListener(CloseEvent.CLOSE,CloseEvent_CLOSE)
  127.                 
  128.         
  129.         stage.nativeWindow.visible = true;//设置本地程序窗体可见   
  130.         stage.nativeWindow.orderToFront();//设置本地程序窗体到最前端 
  131.         
  132.         
  133.         }   
  134.        private function CloseEvent_CLOSE(e:CloseEvent):void{
  135.        
  136.            myWindow.visible=false
  137.        
  138.        }
  139.         var myWindow:NativeWindow
  140.         var num:Number=5
  141.         var timeNum:Number=0
  142.         
  143.         private function Event_ENTER_FRAME(e:Event):void{
  144.             //var myWindow:NativeWindow=stage.nativeWindow
  145.             if(myWindow.y<Capabilities.screenResolutionY-myWindow.height-50){
  146.               
  147.                myWindow.y-=num
  148.             }else{
  149.             
  150.                timeNum++
  151.             }
  152.            
  153.             
  154.             if(timeNum>100){
  155.             
  156.                myWindow.y-=-num
  157.                
  158.             }
  159.             
  160.             
  161.             if(myWindow.y>Capabilities.screenResolutionY){
  162.             
  163.               timeNum=0
  164.                 CloseEvent_CLOSE(null)
  165.                this.removeEventListener(Event.ENTER_FRAME,Event_ENTER_FRAME) 
  166.             
  167.             
  168.             }
  169.             
  170.             
  171.             
  172.          }  
  173.     //关闭程序窗体   
  174.      private function closeApp(evt:Event):void {   
  175.             stage.nativeWindow.close();   
  176.         }  
  177.         
  178.     //改变窗体样式     
  179.     public function deChromeWindow(oldWindow:NativeWindow):NativeWindow{
  180.      
  181.      if(oldWindow.systemChrome != NativeWindowSystemChrome.NONE){
  182.         var newOptions:NativeWindowInitOptions = new NativeWindowInitOptions();
  183.         newOptions.systemChrome = NativeWindowSystemChrome.NONE;
  184.         newOptions.transparent = true;
  185.         
  186.         var newWindow:NativeWindow = new NativeWindow(newOptions);
  187.         newWindow.stage.stageWidth = oldWindow.stage.stageWidth;
  188.         newWindow.stage.stageHeight = oldWindow.stage.stageHeight;
  189.         newWindow.stage.align = oldWindow.stage.align;
  190.         newWindow.stage.scaleMode = oldWindow.stage.scaleMode;
  191.         
  192.         newWindow.x=oldWindow.x
  193.         newWindow.y=oldWindow.y
  194.         
  195.         
  196.         
  197.         for(var i:int = 0; i < oldWindow.stage.numChildren; i++){
  198.             newWindow.stage.addChild(oldWindow.stage.getChildAt(i));
  199.         }
  200.         newWindow.activate();
  201.          oldWindow.close();
  202.         
  203.         return newWindow;
  204.     }
  205.     return oldWindow;
  206. }
  207.             
  208.         ]]>
  209.     </mx:Script>
  210.     <mx:TitleWindow x="0" y="0" width="250" height="200" layout="absolute" id="pan" showCloseButton="true">
  211.     </mx:TitleWindow>
  212.     
  213. </mx:WindowedApplication>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值