代码之家  ›  专栏  ›  技术社区  ›  PiggMiner

为什么我的代码不能将所有内容都绘制到画布上?

  •  0
  • PiggMiner  · 技术社区  · 8 年前

    我试图用Javascript编写一个蛇游戏,但我不明白为什么蛇和食物没有被画出来。正在绘制分数,但颜色不对。我曾尝试使用开发人员工具对其进行调试,所有内容似乎都有正确的值,但没有显示出来。

    完整代码可在此处找到 https://codepen.io/JKrew/pen/KogGxz

    这些是我的draw函数,第一个是Snake函数,第二个是Stage函数。我确保在我的循环中给他们打电话。

    this.draw = function() {
            context.fillStyle = this.color;
    
            for (let i = this.tail.length - 1; i >= 0; i--) {
                context.fillRect = (this.tail[i].x * cellSize, this.tail[i].y * cellSize, cellSize - 1, cellSize - 1);
            }
        };
    
    this.draw = function() {
                context.fillStyle = this.food.color;
                context.fillRect = (this.food.x * cellSize, this.food.y * cellSize, cellSize - 1, cellSize - 1);
    
                context.fillSyle = '#FFF';
                context.fillText('Score: ' + snake.tail.length, 5, canvas.height - 5);
            };
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   Thomas    8 年前

    您正在分配给 fillRect 函数,而不仅仅是调用它:

                context.fillRect = (this.tail[i].x * cellSize, this.tail[i].y * cellSize, cellSize - 1, cellSize - 1);
    

    应该是

                context.fillRect(this.tail[i].x * cellSize, this.tail[i].y * cellSize, cellSize - 1, cellSize - 1);
    

    在第二次通话中也是如此。

    编辑:这是语法上有效的JavaScript的原因是很少使用 comma operator