Я создал игру на основе HTML5 + JS, используя melonJS для Windows8.Как сохранить на диск в формате JSON в приложении Windows Store (используя WinJS)?
Но как сохранить сохраненные игровые данные игрока в файле диска (желательно localFolder).
Я читал образец, представленный на форуме MSDN, но не упоминается о его сохранении в формате формата JSON ... и, кроме того, я немного новичок в программировании приложений Win8.
В любом случае, это то, что я попытался (эта функция вызывается, когда игрок выбирает для сохранения):
function meSave() {
//create a var to store the the persisting data during the play
var dataSaved = {
data: {
progress: game.data.progress,
HP: game.data.HP,
MP: game.data.MP,
Level: game.data.Level,
maxHP: game.data.maxHP,
maxMP: game.data.maxMP,
Money: game.data.Money,
currPos: {
x: me.game.getEntityByName('mainPlayer')[0].pos.x,
y: me.game.getEntityByName('mainPlayer')[0].pos.y,
},
currStage: me.levelDirector.getCurrentLevelId(),
}
};
var applicationData = Windows.Storage.ApplicationData.current;
var localFolder = applicationData.localFolder;
var filename = "dataFile.json";
function writeTimestamp() {
localFolder.createFileAsync("dataFile.json",
Windows.Storage.CreationCollisionOption.replaceExisting)
.then(function (file) {
return Windows.Storage.FileIO.writeTextAsync(file,
JSON.stringify(dataSaved));
}).done(function() {
game.savingDone = true;
});
}
}
Почему вы не просто возвращаете обещание от createFileAsync и остальной части цепочки и выполняете его с помощью символа saveDone? Просто измените последний .done на. Then. Таким образом, вам не нужен новый WinJS.Promise, который вы не выполняете с каким-либо значимым значением, и исключите файл dataSaved.savingDone, который выходит из сферы действия после того, как все это завершится. –
Благодарю вас за ответ. я вызываю «meSave» с помощью нажатия кнопки, а флаг «saveDone» - для кнопки сохранения, чтобы отобразить диалоговое окно при завершении сохранения. @Kraig: учитывая ваше предложение, тогда это будет 'return localFolder.createFileAsync (.....). Then (// writeJSON). Then (function() {game.savingDone = true});'? –
@ KraigBrockschmidt-MSFT - видимо, я хотел устроить вечеринку обещаний. Я не пригласил некоторых гостей на ваше замечательное предложение. :) – WiredPrairie