【electron】图标闪烁+取消闪烁

0.参数定义(全局)

var timer_num = 1;
var timer_arr=[];
const Menu = electron.Menu;
const Tray = electron.Tray;
//托盘对象
var appTray = null;
var trayIcon

1.点击关闭程序缩小到系统托盘当中:ipc.on('open-user-editor', (event,message) => {})

	//系统托盘右键菜单
    var trayMenuTemplate = [
        {
            label: '取消闪烁',
            click: function () {
				clearInterval(timer_arr[timer_num])
				timer_num++;
				appTray.setImage(path.join(trayIcon, 'info.ico'))
				// event.sender.send('tray-removed');
			}
        },
        {
            label: '退出',
             click: function () {
		         app.quit();
                 app.quit();//因为程序设定关闭为最小化,所以调用两次关闭,防止最大化时一次不能关闭的情况
            }
        }
    ];
 
    //系统托盘图标目录
    trayIcon = path.join(__dirname, 'app');//app是选取的目录
 
    appTray = new Tray(path.join(trayIcon, 'info.ico'));//app.ico是app目录下的ico文件
 
    //图标的上下文菜单
    const contextMenu = Menu.buildFromTemplate(trayMenuTemplate);
 
    //设置此托盘图标的悬停提示内容
    appTray.setToolTip('tycrm');
 
    //设置此图标的上下文菜单
    appTray.setContextMenu(contextMenu);
    //单击右下角小图标显示应用
    appTray.on('click',function(){
		userEditorWindow.show();
		clearInterval(timer_arr[timer_num])
		timer_num++;
		appTray.setImage(path.join(trayIcon, 'info.ico'))
    })
	

2.其他界面传来的消息 消息开始闪烁ipc.on('open-user-notice', (event,message) => {})

	//系统托盘图标闪烁
	var count = 0;
	if(!timer_arr[timer_num]){
		timer_arr[timer_num]=setInterval(function() {
				count++;
				if (count%2 == 0) {
					appTray.setImage(path.join(trayIcon, 'empty.ico'))
				} else {
					appTray.setImage(path.join(trayIcon, 'info.ico'))
				}
		}, 500);
	}

 

3.注意事项:

网上大部分取消闪烁用一下两种方法:

① https://blog.csdn.net/weixin_33709219/article/details/89080011

event.sender.send('tray-removed')

②https://blog.csdn.net/jfengamarsoft/article/details/105818039

clearInterval(interv);

第一种没试出来。。第二种局部定义计数器没办法在其他地方调用关闭闪烁,所以干脆用数组来存计数器了,在每次删除计数器的时候num++,下一次就开启新的计数器。

 

你可能感兴趣的:(JQ,前端,electron)