javascript - Canvas fillRect 不工作

标签 javascript html5-canvas

我有一个简单的js程序。
它为游戏创建基于图 block 的 map 。

整个 Canvas 都是绿色的,但这不应该发生。
Canvas 上的网格应根据其单元格是 0 还是 1

进行着色

var tileW = 40,
  tileH = 40;
var mapW = 10,
  mapH = 10;

var gameMap = [
  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  [0, 1, 1, 1, 0, 1, 1, 1, 1, 0],
  [0, 1, 0, 0, 0, 1, 0, 0, 0, 0],
  [0, 1, 1, 1, 1, 1, 1, 1, 1, 0],
  [0, 1, 0, 1, 0, 0, 0, 1, 1, 0],
  [0, 1, 0, 1, 0, 0, 0, 1, 1, 0],
  [0, 1, 1, 1, 1, 1, 1, 1, 1, 0],
  [0, 1, 0, 0, 0, 0, 0, 1, 0, 0],
  [0, 1, 1, 1, 0, 1, 1, 1, 1, 0],
  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
];

var canvas = document.getElementById("canvas");

var ctx = canvas.getContext("2d");

function draw_map() {
  for (var x = 0; x < mapW; x++) {
    for (var y = 0; y < mapH; y++) {
      switch (gameMap[y][x]) {
        case 0:
          ctx.fillStyle = "#999787";
        case 1:
          ctx.fillStyle = "#ccffcc";
      }
      ctx.fillRect(x * tileW, y * tileH, tileW, tileH); //->>?? this part is creating problem
    }
  }
}
draw_map();
<canvas id="canvas" width="400" height="400" style="border:1px solid black;">

最佳答案

您的 switch 语句中缺少 break,因此它从黑色变为绿色。试试这个。

      switch(gameMap[y][x]) {
        case 0:
           ctx.fillStyle="#999787";
           break;
        case 1:
           ctx.fillStyle="#ccffcc"; 
           break;
      }

关于javascript - Canvas fillRect 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49294599/

相关文章:

javascript - 无法在 mvc 获取 Controller 方法(来自 Uri())中从 QueryString 获取 DATETIME

jquery - 在不丢失宽高比的情况下在 Canvas 上调整照片大小

html - 错误类型错误 : Cannot read property 'nativeElement' of undefined

javascript - 删除 HTML 元素的所有子元素的更有效方法是什么?

javascript - KineticJS 中的 stage.toDataURL 不起作用

javascript - 同时旋转和移动图片 Canvas

javascript - 从 Fetch Response 对象中获取文本

javascript - 无法按顺序触发两个 jQuery ajax 调用

javascript - Uncaught Error : _registerComponent(. ..) : Target container is not a DOM element. (...)