我正在使用Air应用程序(JavaScript,而不是Flex),我无法使系统托盘(在Mac上停靠)菜单处理程序工作。当我右键单击系统托盘(停靠)图标时,我可以看到我的自定义菜单,但是当我单击菜单项时,没有任何反应,回调代码不会执行。我使用了错误的事件类型吗?我找不到除article on Adobe Developer Connection之外的更多信息,并且他们在那里使用Event.SELECT,但它似乎不起作用。
var menu = new air.NativeMenu();
addMenuHandler(menu, 'Exit App', function (event) {
air.trace("It's not even getting here when the menu item is clicked.");
});
addMenuHandler(menu, 'Log Out', function (event) {
// TODO
});
air.NativeApplication.nativeApplication.icon.menu = menu;
// Tray/Dock Menu
if (menu && air.NativeApplication.supportsSystemTrayIcon) { // Windows
var iconLoader = new runtime.flash.display.Loader();
iconLoader.load(new air.URLRequest('/src/icons/app_16.png'));
iconLoader.contentLoaderInfo.addEventListener(air.Event.COMPLETE, function (event) {
air.NativeApplication.nativeApplication.icon.bitmaps = new Array(event.target.content.bitmapData);
air.NativeApplication.nativeApplication.icon.tooltip = 'App';
loadMainWindow();
});
} else if (menu && air.NativeApplication.supportsDockIcon) { // Mac
loadMainWindow();
}
function loadMainWindow () {
location.href = '/main.html';
}
function addMenuHandler (menu, caption, callback) {
var menuItem = new air.NativeMenuItem(caption);
menuItem.addEventListener(air.Event.SELECT, callback);
menu.addItem(menuItem);
}
答案 0 :(得分:1)
试试这个:
menuItem.addEventListener(Event.SELECT, callback);
进一步阅读:http://www.adobe.com/devnet/air/flash/quickstart/articles/stopwatch_dock_system_tray.html
答案 1 :(得分:0)
也许尝试使用更详细的方法而不是使用别名: ' window.runtime.flash.events.Event'而不是' air.Event'?