【问题标题】:Saving Local Data in Metro Style App在 Metro Style 应用程序中保存本地数据
【发布时间】:2012-04-30 17:52:00
【问题描述】:

我想在 Windows 8 Metro 风格的应用程序中创建一个评分机制,并希望使用 Windows.Storage.ApplicationData 在本地保存该分数,因为我是 Visual Studio 和应用程序构建的新手,所以我很难过。

var applicationData = Windows.Storage.ApplicationData.current;

var localSettings = applicationData.localSettings;

// Create a simple setting

localSettings.values["totalPike"] = '0';

// Read data from a simple setting

var totalPike = localSettings.values["totalPike"];

if (!totalPike) {
    // No data
}
else {
    // Access data in value
}

// Delete a simple setting

localSettings.values("totalPike");

这就是 windows 处理来自 msdn 的应用数据的方式

$(document).ready(function () {

        var clicks = 99;

        $("#totalScoreTestButton").click(function () {
            totalPike = totalPike + clicks
            $("#totalScoreTest").text(totalPike);
        });
});

这是我当时用来将分数添加到总分数中的功能,但是每当我关闭应用程序并重新启动它时,都不会保存分数。有人可以帮助我吗?如果可能的话,请解释一下 Metro 应用程序如何处理本地数据?

【问题讨论】:

    标签: javascript windows windows-runtime visual-studio-express winjs


    【解决方案1】:

    例如:

    (function () {
    "use strict";
    
    WinJS.Namespace.define("PersistenceManager", {
        stateFile: "game_state",
    
        saveState: function () {
            var state = {
                game_state: game_state,
                level: levelIndex,
                score: SCORE,
                playerLives: player_lives,
                compLives: comp_lives
            };
    
            WinJS.Application.local.writeText(PersistenceManager.stateFile, JSON.stringify(state));
        },
    
        loadStateAsync: function () {
            var app = WinJS.Application;
    
            return app.local.exists(PersistenceManager.stateFile).then(function (exists) {
                if (exists)
                    return app.local.readText(PersistenceManager.stateFile).then(function (data) {
                        return JSON.parse(data);
                    });
                else return null;
            });
        },
    
    });
    })();
    

    【讨论】:

    • 感谢您的回答,但我使用 Windows.Storage.ApplicationData.current 来保存数据,所以我猜它会将文件保存在 .dll 或其他地方。
    • 感谢分享此代码。它在应用程序(visual studio 2015 javascript Apache Cordova)的执行过程中运行良好,但它不会在调用中持续存在。保存数据OK,读取数据OK。关闭应用程序并再次启动,没有数据。我错过了什么?我最终使用了:window.localStorage.setItem(PersistenceManager.stateFile, JSON.stringify(state));并返回 JSON.parse(window.localStorage.getItem(PersistenceManager.stateFile));
    猜你喜欢
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 2022-01-18
    相关资源
    最近更新 更多