Win8 Metro App setInterval Javascript

Win8 Metro App setInterval Javascript

本文关键字:Javascript setInterval App Metro Win8      更新时间:2023-09-26

我是构建 Metro 应用程序的新手。我只想每秒创建一个新矩形,并从位置 x = 0 开始

但是使用我的代码,似乎在绘制第一个矩形之前调用了 x+=10。但我不知道我该如何改变这一点。有人可以帮我吗?

(function () {
    "use strict";
    var app = WinJS.Application;
    var activation = Windows.ApplicationModel.Activation;
    WinJS.strictProcessing();
    var x = 0;
    var y = 0;
    function Clock(context) {
        context.fillRect(x, y, 9, 9);
        context.fillStyle = "red";
        x += 10;
    }
    app.onactivated = function (args) {
        if (args.detail.kind === activation.ActivationKind.launch) {
            if (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated) {
                var canvas = document.getElementById("uhr");
                var context = canvas.getContext("2d");
                setInterval(function () { Clock(context) }, 1000);

            } else {
            }
            args.setPromise(WinJS.UI.processAll());
        }
    };
    app.oncheckpoint = function (args) {
    };

    app.start();
})();

尝试将 x 和 y 的值存储在 Clock() 的临时和局部范围的变量中。

function Clock(context) {
    var tmpX = x;
    var tmpY = y;
    context.fillRect(tmpX, tmpY, 9, 9);
    context.fillStyle = "red";
    x += 10;
}

在执行 x+=10; 之前,我已经通过 context.fill() 解决了它。