AIR-任务栏高亮或托盘图标闪烁

时间:2021-07-12 08:08:46

一、任务栏高亮

NativeWindow提供了notifyUser()方法来闪烁任务栏标题:notifyUser(type:String):void;

该方法有一个参数,两个可选值:NotificationType.CRITICAL和NotificationType.INFORMATIONAL:

CRITICAL参数会持续在任务栏闪烁,直到你点击它。

INFORMATIONAL只会闪烁两次就停止并一直处于高亮状态。


二、托盘图标闪烁

原理:一张透明图片和一张飞透明图片按照指定的时间轮流切换。

代码如下:

package   
{

import flash.desktop.*;
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.utils.Timer;


/**
* 新消息时托盘图标闪烁
*/
public class SystemTrayFlash
{
[Embed(source="../assets/icon32.png")]
private var icon1:Class;
[Embed(source="../assets/empty32-3.png")]
private var icon2:Class;
private static var _notifyTimer:Timer;//静态,全局只有一个闪烁计时器
private var _state:int=0; //闪动状态
private var _bitmapDataArray:Array = []; //系统任务栏图标数组

public function SystemTray()
{
//设置任务栏监听
_notifyTimer = new Timer(500);
_notifyTimer.addEventListener(TimerEvent.TIMER,onNotify);
_bitmapDataArray[0] = (new icon1()).bitmapData;
_bitmapDataArray[1] = (new icon2()).bitmapData;
}


/**
* 开始闪烁托盘图标
*/
public function startNotify():void{

_notifyTimer.start();
}

/**
* 停止闪烁托盘图标
*/
public function stopNotify():void{
_notifyTimer.stop();
}


//每隔500ms触发Timer状态栏闪动提醒事件
private function onNotify(evt:TimerEvent):void{
if (_state == 0)
_state = 1;
else
_state = 0;
NativeApplication.nativeApplication.icon.bitmaps = [_bitmapDataArray[_state]]; //设置托盘图标
}
}
}