我的Javascript贴图不会绘制吗?

米奇·沃德尔

这是我的脚本,我似乎无法弄清楚出了什么问题,我想绘制一个12 * 12的瓦片地图,并且瓦片为32px-32px。当我运行页面时,磁贴不会绘制,我尝试使用parse int,如下所示,但仍然无法正常工作。

if(parseInt(mapArray[x][y]) == 0){
    ctx.drawImage(rockTile, posX, posY, tileSize, tileSize);
}

这是我创建的脚本。

var canvas = document.createElement("canvas");
var ctx = canvas.getContext("2d");
canvas.width = (32 * 12);
canvas.height = (32 * 12);
document.body.appendChild(canvas);

var rockTile = new Image();
rockTile.src = "../Images/dc-dngn/floor/rect_gray0.png";
var tileSize = 32;
var posX = 0;
var posY = 0;

var mapArray = [
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
];

$(document).ready(function(){
    drawMap();
});

function drawMap(){
    for(var x = 0; x < mapArray.length; x++){
        for(var y = 0; y < mapArray[x].length; y++){
            if(mapArray[x][y] == 0){
                ctx.drawImage(rockTile, posX, posY, tileSize, tileSize);
            }
            posX += 32;
        }
        posX = 0;
        posY += 32;
    }
}

如果有人可以帮助我绘制我的瓷砖,将不胜感激,谢谢!

实体

您可以看到两个主要问题:

  1. 您正在访问document.body它之前定义。
  2. 您可能正在使用图像,然后再加载图像。

这是解决这两个问题的代码:

// variables are defined as global variables
var posX = 0;
var posY = 0;
var tileSize = 32;
var mapArray;
var canvas;
var ctx;
var rockTile;

$(function() {
    // document should be defined now
    canvas = document.createElement("canvas");
    ctx = canvas.getContext("2d");
    canvas.width = (32 * 12);
    canvas.height = (32 * 12);
    document.body.appendChild(canvas);

    mapArray = [
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    ];

    // wait until the image is loaded to draw
    rockTile = new Image();
    rockTile.onload = drawMap;
    rockTile.src = "../Images/dc-dngn/floor/rect_gray0.png";        
});

function drawMap(){
    posX = 0;
    posY = 0;
    for(var x = 0; x < mapArray.length; x++){
        for(var y = 0; y < mapArray[x].length; y++){
            if(mapArray[x][y] == 0){
                ctx.drawImage(rockTile, posX, posY, tileSize, tileSize);
            }
            posX += 32;
        }
        posX = 0;
        posY += 32;
    }
}

另外,请务必仔细检查您的图像路径。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Word不会从网络粘贴图像吗?

来自分类Dev

我的JavaScript不会重复

来自分类Dev

javascript画布不会绘制图像

来自分类Dev

我可以在 Laravel eloquent 模型中放置一个变形贴图“别名”吗?

来自分类Dev

我可以让OwnerDrawLabelProvider在单元外部绘制吗?

来自分类Dev

我应该在JavaScript中使用大型switch语句而不会出现性能问题吗?

来自分类Dev

我应该在JavaScript中使用大型switch语句而不会出现性能问题吗?

来自分类Dev

Div不会让我编辑它的大小吗?

来自分类Dev

IntelliJ 不会让我使用实现方法吗?

来自分类Dev

在Javascript中,“ for ... in”不会迭代原型的属性吗?

来自分类Dev

在Javascript中,“ for ... in”不会迭代原型的属性吗?

来自分类Dev

如果再次单击,javascript 不会 .toggleClass() 吗?

来自分类Dev

我的Sprite不会执行我告诉它的操作吗?

来自分类Dev

我可以使用Selenium Python在画布上绘制吗?

来自分类Dev

QML:我可以从矩形的中心而不是从角落绘制矩形吗?

来自分类Dev

base :: plot-我可以检索绘制的纵横比吗?

来自分类Dev

我可以改善此代码以绘制轮廓文字吗

来自分类Dev

我可以在3d中绘制几个直方图吗?

来自分类Dev

我可以在按钮内绘制形状吗?

来自分类Dev

我可以在Excel中仅绘制/过滤每天的峰值吗

来自分类Dev

HTML文件不会显示我的javascript变量

来自分类Dev

为什么我的JavaScript函数不会结束?

来自分类Dev

我必须履行我的JavaScript承诺吗?

来自分类Dev

Qt使用颜色和Alpha贴图绘制图标

来自分类Dev

使用gvisMap可以绘制出最大数量的点吗?或gvisMap不会绘制所有点

来自分类Dev

Python-Selenium不会等待我的网站刷新吗?

来自分类Dev

Rust不会缩小类型吗?还是我弄错了

来自分类Dev

Swagger 1.5不会显示我的1.2的@Api描述吗?

来自分类Dev

函数不会让我在函数外部显示错误消息吗?

Related 相关文章

  1. 1

    Word不会从网络粘贴图像吗?

  2. 2

    我的JavaScript不会重复

  3. 3

    javascript画布不会绘制图像

  4. 4

    我可以在 Laravel eloquent 模型中放置一个变形贴图“别名”吗?

  5. 5

    我可以让OwnerDrawLabelProvider在单元外部绘制吗?

  6. 6

    我应该在JavaScript中使用大型switch语句而不会出现性能问题吗?

  7. 7

    我应该在JavaScript中使用大型switch语句而不会出现性能问题吗?

  8. 8

    Div不会让我编辑它的大小吗?

  9. 9

    IntelliJ 不会让我使用实现方法吗?

  10. 10

    在Javascript中,“ for ... in”不会迭代原型的属性吗?

  11. 11

    在Javascript中,“ for ... in”不会迭代原型的属性吗?

  12. 12

    如果再次单击,javascript 不会 .toggleClass() 吗?

  13. 13

    我的Sprite不会执行我告诉它的操作吗?

  14. 14

    我可以使用Selenium Python在画布上绘制吗?

  15. 15

    QML:我可以从矩形的中心而不是从角落绘制矩形吗?

  16. 16

    base :: plot-我可以检索绘制的纵横比吗?

  17. 17

    我可以改善此代码以绘制轮廓文字吗

  18. 18

    我可以在3d中绘制几个直方图吗?

  19. 19

    我可以在按钮内绘制形状吗?

  20. 20

    我可以在Excel中仅绘制/过滤每天的峰值吗

  21. 21

    HTML文件不会显示我的javascript变量

  22. 22

    为什么我的JavaScript函数不会结束?

  23. 23

    我必须履行我的JavaScript承诺吗?

  24. 24

    Qt使用颜色和Alpha贴图绘制图标

  25. 25

    使用gvisMap可以绘制出最大数量的点吗?或gvisMap不会绘制所有点

  26. 26

    Python-Selenium不会等待我的网站刷新吗?

  27. 27

    Rust不会缩小类型吗?还是我弄错了

  28. 28

    Swagger 1.5不会显示我的1.2的@Api描述吗?

  29. 29

    函数不会让我在函数外部显示错误消息吗?

热门标签

归档