gpt4 book ai didi

javascript - 无法在js中将图像绘制到 Canvas 上

转载 作者:行者123 更新时间:2023-12-03 12:26:15 24 4
gpt4 key购买 nike

好吧,所以我和我的 friend 正在尝试用 html 和 js 制作一个游戏。我是必须为程序构建基础以显示 map 上使用的 block 的人。但出于某种原因,它根本不想在 Canvas 上绘制我的图像。我需要显示 32x32 像素 block 的 24x32 阵列,我需要能够更改其图像。我在网上查看过,到处都说要使用函数drawImage(),但我的程序没有看到它属于二维上下文下的 Canvas 。这是我的代码:

index.html:

<html lang="en">
<head>
</head>
<body>
<div class="canvas">
<canvas id="canvas" height="768" width="1024" style="border:1px solid black">
Your browser does not support canvas element.
</canvas>

<script type="text/javascript" src="Main.js"></script>
<script type="text/javascript" src="World Loader.js"></script>
</div>
</body>
</html>

Main.js:

var c = document.getElementById('canvas');
var ctx = c.getContext('2d');
ctx.font = "20px Arial";
var FPS = 60;
var Mode = 0;

function displayTick(){
Map.DisplayChunk(0,0);
}

function gameTick(){

}

Chunk.LoadNew();
window.setInterval(displayTick, 1000 / FPS);
window.setInterval(gameTick, 600);

和 World_Loader.js:

var Block={
WalkThrough:true,
SeeThrough:true,
Interactable:false,
Occupied:false,
Sprite:Image,
Type:"",
X:0,
Y:0
};

var Chunk={
matrix:Block[32][24],
background:Image,
display:function(xindex, yindex){
ctx.drawImage(Background,0,0);
x=xindex;
y=yindex;
for(y=0; y<24; Y++){
for(x=0; x<32; x++){
ctx.drawImage(matrix[X][Y].sprite,X*32,Y*32);
};
};
},
loadNew:function(){
for(Y=0; Y<24; Y++){
for(X=0; X<32; X++){
block=new Block;
block.Sprite.src="test.png";
this.matrix[X][Y]=block;
};
};
}
};

var World={
matrix:Chunk[5][5],
indexX:0,
indexY:0
};

我对 js 还很陌生,正在尝试自学,所以可能会有很多错误和东西。但有人能看出它为什么不想在 Canvas 上绘图吗?

最佳答案

你的脚本有一些问题(语法错误,范围问题等等),你应该从更简单的东西开始,我建议你开始阅读这个online book 。无论如何,下面您可以看到一个简单的脚本,用于在 Canvas 上填充和显示一小块图像网格。

var Map = (function () {
var options = arguments[0] || {};
var _grid = [];
var _rNum = options.rowuUm || 10;
var _cNum = options.colNum || 10;

var _block = function (x, y) {
this.img = document.getElementById('on');
this.X = x;
this.Y = y;

};

return {
init: function () {
for (var i = 0; i < _rNum; i++) {
_grid[i] = [];
for (var j = 0; j < _cNum; j++) {
_grid[i][j] = new _block(i, j);
}
}
},

paint: function (canvasId) {
var cnv = document.getElementById(canvasId);
var ctx = cnv.getContext('2d');
var img = new Image();
img.src = 'on.jpg';
img.onload = function () {
for (var i = 0; i < _rNum; i++) {
for (var j = 0; j < _cNum; j++) {
ctx.drawImage(img, i * 32, j * 32);

}
}
};
},
}
})();

Map.init();
Map.paint('canvas');

关于javascript - 无法在js中将图像绘制到 Canvas 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24192280/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com