最小化后每隔一分钟会弹出一个提示窗口,停留一会会自动消失
源代码:
- <?xml version="1.0" encoding="utf-8"?>
- <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
- applicationComplete="initApplication()"
- layout="absolute"
- verticalAlign="top"
- horizontalAlign="left"
- width="250"
- height="200">
- <mx:Script>
- <![CDATA[
- import flash.net.*
- import flash.events.*
- import flash.display.*
- import mx.events.*
- import mx.controls.*
- import flash.system.*;
- import mx.core.*
- import flash.utils.Timer
-
- 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("a.jpg"));//这里先要加载托盘图标的小图片
-
- this.addEventListener(Event.CLOSING,closingApplication);//设置关闭体的事件
-
- this.horizontalScrollPolicy=ScrollPolicy.OFF
- this.verticalScrollPolicy=ScrollPolicy.OFF
- }
-
- //生成托盘
-
- public function prepareForSystray(event:Event):void{
-
- dockImage=event.target.content.bitmapData;
-
- if(NativeApplication.supportsSystemTrayIcon){
-
- setSystemTrayProperties();//设置托盘菜单的事件
-
- SystemTrayIcon(NativeApplication.nativeApplication.icon).menu=createSystrayRootMenu();//生成托盘菜单
-
- }
-
- }
-
- //关闭窗体的事件
-
- 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 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];//设置托盘的图标
-
- var mytimer:Timer=new Timer(60000, 0)
- mytimer.addEventListener(TimerEvent.TIMER,timerEvent)
- mytimer.start()
- }
-
- function timerEvent(e:TimerEvent):void{
-
- undock(null)
-
- }
-
- //还原
- function goback(evt:Event):void{
-
-
-
-
-
- }
-
- //定时提醒
- public function undock(evt:Event):void {
-
- //NativeApplication.nativeApplication.icon.bitmaps= [];//将托盘图标清空
-
- this.addEventListener(Event.ENTER_FRAME,Event_ENTER_FRAME)
-
- stage.nativeWindow.width=200
- stage.nativeWindow.height=200
-
- stage.nativeWindow.x=Capabilities.screenResolutionX-stage.nativeWindow.width
- stage.nativeWindow.y=Capabilities.screenResolutionY-stage.nativeWindow.height
-
- myWindow=deChromeWindow(stage.nativeWindow)
- myWindow.visible=true
-
- pan.width= myWindow.width
- pan.height= myWindow.height
-
- pan.x=0
- pan.y=0
-
- pan.title="测试"
-
- pan.addEventListener(CloseEvent.CLOSE,CloseEvent_CLOSE)
-
-
- stage.nativeWindow.visible = true;//设置本地程序窗体可见
-
- stage.nativeWindow.orderToFront();//设置本地程序窗体到最前端
-
-
- }
- private function CloseEvent_CLOSE(e:CloseEvent):void{
-
- myWindow.visible=false
-
- }
- var myWindow:NativeWindow
- var num:Number=5
- var timeNum:Number=0
-
- private function Event_ENTER_FRAME(e:Event):void{
-
- //var myWindow:NativeWindow=stage.nativeWindow
-
- if(myWindow.y<Capabilities.screenResolutionY-myWindow.height-50){
-
- myWindow.y-=num
- }else{
-
- timeNum++
- }
-
-
- if(timeNum>100){
-
- myWindow.y-=-num
-
- }
-
-
- if(myWindow.y>Capabilities.screenResolutionY){
-
- timeNum=0
- CloseEvent_CLOSE(null)
- this.removeEventListener(Event.ENTER_FRAME,Event_ENTER_FRAME)
-
-
- }
-
-
-
- }
-
- //关闭程序窗体
- private function closeApp(evt:Event):void {
-
- stage.nativeWindow.close();
-
- }
-
- //改变窗体样式
- public function deChromeWindow(oldWindow:NativeWindow):NativeWindow{
-
- if(oldWindow.systemChrome != NativeWindowSystemChrome.NONE){
- var newOptions:NativeWindowInitOptions = new NativeWindowInitOptions();
- newOptions.systemChrome = NativeWindowSystemChrome.NONE;
- newOptions.transparent = true;
-
- var newWindow:NativeWindow = new NativeWindow(newOptions);
- newWindow.stage.stageWidth = oldWindow.stage.stageWidth;
- newWindow.stage.stageHeight = oldWindow.stage.stageHeight;
- newWindow.stage.align = oldWindow.stage.align;
- newWindow.stage.scaleMode = oldWindow.stage.scaleMode;
-
- newWindow.x=oldWindow.x
- newWindow.y=oldWindow.y
-
-
-
- for(var i:int = 0; i < oldWindow.stage.numChildren; i++){
- newWindow.stage.addChild(oldWindow.stage.getChildAt(i));
- }
- newWindow.activate();
- oldWindow.close();
-
- return newWindow;
- }
- return oldWindow;
- }
-
- ]]>
- </mx:Script>
- <mx:TitleWindow x="0" y="0" width="250" height="200" layout="absolute" id="pan" showCloseButton="true">
- </mx:TitleWindow>
-
- </mx:WindowedApplication>