Javascript 为什么1秒后屏幕上的一切都消失了?

Javascript 为什么1秒后屏幕上的一切都消失了?,javascript,html,html5-canvas,Javascript,Html,Html5 Canvas,不知怎的,屏幕上的一切都在一秒钟后消失了 我的浏览器只显示以下错误:“未捕获的TypeError:无法读取未定义的属性“0” 我现在知道问题出在哪里了。 我只知道变量“row”有问题 也许我发布了很多代码。对不起 var canvas = document.getElementById('myCanvas'); var context = canvas.getContext('2d'); var FPS = 30; var map = [ [0, 1, 0, 1, 0],

不知怎的,屏幕上的一切都在一秒钟后消失了

我的浏览器只显示以下错误:“未捕获的TypeError:无法读取未定义的属性“0”

我现在知道问题出在哪里了。 我只知道变量“row”有问题

也许我发布了很多代码。对不起

var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
var FPS = 30;

var map = [ [0, 1, 0, 1, 0],
            [1, 0, 1, 0, 1],
            [0, 1, 0, 1, 0],
            [1, 0, 1, 0, 1],
          ]


var ts = 20
var tss = 0
var row = 0
var tr = 0

function drawtiley(){
    context.beginPath();
    context.rect(tss, tr, 20, 20);
    context.fillStyle = 'yellow';
    context.fill();
};
function drawtiler(){
    context.beginPath();
    context.rect(tss, tr, 20, 20);
    context.fillStyle = 'red';
    context.fill();
};

function drawlvl() {
    for(var o = 0; o < 5; o++ ){
        for(var i = 0 ; i < map.length; i++){
            if(map[row][i] === 0) {
                drawtiley()
            }
            else if (map[row][i] === 1) {
                drawtiler()
            }

            tss = tss + ts;
        };
        tss = 0;
        row = row + 1;
        tr = tr + 20;

    }
    row = 0;
    tr = 0;
}
function draw() {
    context.clearRect( 0, 0, canvas.width, canvas.height );
    drawlvl();

}

function update() {



}


function tick() {
    draw();

}

setInterval( tick, 1000 / FPS );
var canvas=document.getElementById('myCanvas');
var context=canvas.getContext('2d');
var FPS=30;
var-map=[[0,1,0,1,0],
[1, 0, 1, 0, 1],
[0, 1, 0, 1, 0],
[1, 0, 1, 0, 1],
]
变量ts=20
var tss=0
变量行=0
var tr=0
函数drawtiley(){
context.beginPath();
rect(tss,tr,20,20);
context.fillStyle='yellow';
context.fill();
};
函数drawtiler(){
context.beginPath();
rect(tss,tr,20,20);
context.fillStyle='red';
context.fill();
};
函数drawlvl(){
对于(变量o=0;o<5;o++){
对于(变量i=0;i
您的循环有
在停止前检查值0、1、2、3、4

但是您的
map
数组只会上升到
map[3]
<代码>映射[4]不存在,因此出现错误


您的
o
变量似乎完全没有意义。为什么不做
for(row=0;row)OP可能意味着for(var o=0;o<5;o++){
成为
for(var row=0;row<5;row++){
?我清理了这段代码并删除了一些冗余变量。以防万一这会有帮助:)(我确实在做任何事情来避免真正的工作完成:P)