javascript - 为什么这个 For 循环在 Canvas 中不起作用?

标签 javascript loops canvas

我试图让 Canvas 循环显示 i - 我希望 i 就像计数 t 一样发生变化>,从1到9不间断。我只是不明白出了什么问题。 JavaScript 看起来像这样:

window.requestAnimFrame = (function(){
    return  window.requestAnimationFrame       ||  
            window.webkitRequestAnimationFrame ||  
            window.mozRequestAnimationFrame    ||  
            window.oRequestAnimationFrame      ||  
            window.msRequestAnimationFrame     ||  
    function(callback){window.setTimeout(callback, 1000/60)}; 
})(); 

var cvs = document.getElementById("canvasId"),
    c = cvs.getContext("2d"),
    t = 0;

window.onload=function loop(){
    window.requestAnimFrame(loop);
    t++;

    for(i=0;i<10;i++){
        c.clearRect(0,0,cvs.width,cvs.height);
        c.font = "bold 90px Arial";
        c.fillText(i + " " + t, 100, 200);
    }
};

http://jsfiddle.net/luxiyalu/9UZU5/

这是一个迷你游戏的一部分,我已经被困在这里两天了;如果有人能告诉我出了什么问题...非常感谢!

最佳答案

当您在绘图函数中将 i 从 0 迭代到 9 时,两次绘图之间没有剩余时间,用户只能看到最后一次迭代值,即 9。

我不确定你真正想要实现什么,但看起来你想要这个:

var cvs = document.getElementById("canvasId"),
    c = cvs.getContext("2d"),
    t = 0,
    i = 0;

window.onload = function loop(){
    window.requestAnimFrame(loop);
    i++;
    if (i==10) {
      i = 0;
      t++;
    }

    c.clearRect(0,0,cvs.width,cvs.height);
    c.font = "bold 90px Arial";
    c.fillText(i + " " + t, 100, 200);

};

Demonstration

关于javascript - 为什么这个 For 循环在 Canvas 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15019485/

相关文章:

javascript - 为什么这个 AJAX 回调没有被调用?

javascript - 在附加到正文之前获取 div 的大小

php - Javascript - 如何在轮播中添加暂停按钮?

创建线程循环

php - 我可以使用 PHP 对 Canvas 进行服务器端处理吗

javascript - 添加类以突出显示输入框边框(如果它是空的)

excel - VBA - 嵌套的 For 循环不起作用

python - 如何在 python 中修改此代码以返回/打印所有正数而不仅仅是一个

html - 检查图像A是否存在于图像B中

javascript - 如何通过ajax发送base64图像