【发布时间】:2016-05-16 11:58:13
【问题描述】:
我正在尝试将某些标准的图像加载到画布中,但只有当我将常量作为 drawImage()(带有常量注释的 drawImage)函数的参数时才加载图像。我可以添加尽可能多的副本只要我使用常量作为参数,我想要的图像就可以画布。我的代码有什么问题?请帮助..
代码如下:
JS:
slotSize=50px;
playArea=9;
var grid=[];
function renderGrid(grid)
{
for(var i=0,y=0;i<playArea;i++,y+=slotSize)
{
for(var j=0,x=0;j<playArea;j++,x+=slotSize)
{
ctx.fillStyle=grid[i][j];
if(grid[i][j]=="white")
{
grass=new Image();
grass.onload=function()
{
//console.log(x+","+y);
ctx.drawImage(grass,x,y,slotSize-2,slotSize-2);
//ctx.drawImage(grass,0,0,slotSize-2,slotSize-2); works!
}
grass.src="../assets/grass.jpg";
}
else
{
ctx.fillRect(x,y,slotSize,slotSize);
}
ctx.strokeRect(x,y,slotSize,slotSize);
}
}
}
window.onload=function loadLocal()
{
canvas=document.getElementById("canvas");
ctx = canvas.getContext("2d");
for(var i=0;i<playArea;i++)
{
grid[i]=[];
}
for(var i=0;i<playArea;i++)
{
for(var i=j;i<playArea;i++)
{
grid[i][j]="white";
}
}
renderGrid();
}
HTML:
<canvas id="canvas" width="450" height="450">
Your browser does not support the canvas element.
【问题讨论】:
-
我查了一下,但没有真正得到答案:(
-
没有?链接副本中的那些答案很好地解释了您的代码中发生了什么。如果你将来要写 JS 代码,你最好仔细研究给定的例子,并理解解决方案。闭包是 JS 的基本特性之一,你必须知道如何使用它们。只是复制粘贴一些完全适合您的问题的给定代码不会让您走得太远......
-
好的,这次我更耐心地完成了答案,我想我明白了。谢谢 :)
标签: javascript html canvas drawimage