Обработчики меню значков на панели задач / док-станций Adobe Air

Я работаю над приложением Air (JavaScript, а не Flex), и я не могу заставить работать обработчики меню в панели задач (док на Mac). Я вижу свое настраиваемое меню, когда я щелкаю правой кнопкой мыши значок на панели задач (док), но когда я нажимаю на элементы меню, ничего не происходит, код обратного вызова не выполняется. Я использую неправильный тип события? Мне не удалось найти дополнительную информацию, кроме статьи о 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);
}

person Kvakes    schedule 02.05.2014    source источник


Ответы (2)


Попробуй это:

menuItem.addEventListener(Event.SELECT, callback);

Дополнительная литература: http://www.adobe.com/devnet/air/flash/quickstart/articles/stopwatch_dock_system_tray.html

person Paul Facklam    schedule 03.05.2014
comment
Попробовал. Тот же эффект. - person Kvakes; 04.05.2014

Может быть, попробовать использовать более подробный подход вместо использования псевдонимов: window.runtime.flash.events.Event вместо air.Event?

person Ivan Baydanutsa    schedule 08.05.2014