Хорошо, я понимаю, что эта ветка СТАРАЯ, но если она кому-то поможет.
Мое решение похоже на полный взлом - позор для Adobe - но оно работает.
Сохранить данные в виде строк JSON в меню данных
Меню сохраняются при загрузке страницы, и вы можете назначить пользовательские данные меню. До сих пор, похоже, нравятся только простые типы данных, такие как строки или целые числа. Поэтому решение состоит в том, чтобы загрузить json2.js (http://json.org) и использовать его команды stringify()
и parse()
, чтобы преобразовать состояние вашего приложения в строку JSON, а затем сохранить его в элементе .data
меню.
Я сохранил его в первом меню. в списке items
.
Используя jQuery
, мой код приложения выглядел так:
function InitApp() {
// check before we create the menu for the very first time.
var menu = air.NativeApplication.nativeApplication.menu;
var firstMenu = menu.items[0];
var dataStore = firstMenu.data;
if (dataStore == null) {
air.trace("Create Menu Data Store");
var dataObj = {
msg: "Message Object",
status: 1
};
var dataObjStr = JSON.stringify(dataObj);
firstMenu.data = dataObjStr;
dataStore = firstMenu.data;
air.trace("Created menu data store");
air.trace(dataObjStr);
} else {
var dataStore = firstMenu.data;
var obj = JSON.parse(dataStore);
air.trace("Retrieved Menu Data Store");
air.trace(obj.msg);
}
BuildMenu();
// check after we create our menu
firstMenu = air.NativeApplication.nativeApplication.menu.items[0];
firstMenu.data = dataStore; // pass it along.
}
$(document).ready(InitApp);
Эти данные исчезают при закрытии приложения, поэтому они сохраняются только при открытом приложении.
Реальным ответом было бы для nativeApplication поддерживать ТОЧНУЮ ЖЕ ФУНКЦИЮ в качестве меню!
Примечание. Я написал это на Mac, поэтому вам придется настроить код для использования NativeWindow.menu для windows / linux.