【问题标题】:Win8 Metro App setInterval JavascriptWin8 Metro App setInterval Javascript
【发布时间】:2012-08-07 14:57:59
【问题描述】:

我是构建 Metro 应用程序的新手。 我只想每秒创建一个新的 Rectangle 并从位置 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();
})();

【问题讨论】:

    标签: javascript microsoft-metro


    【解决方案1】:

    尝试在 Clock() 中将 x 和 y 的值存储在一个临时和本地范围的变量中。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2012-02-16
        • 1970-01-01
        • 2023-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多