一开始,对不起我的英语:(
我对画布元素很感兴趣,我正在尝试制作一个游戏浏览器,但我无法解决这个问题。
我得到二维数组中的地图图块。
我得到了位置播放器,我翻译了上下文(将其绘制在画布的中心),然后考虑到地图中的绝对位置,我重新绘制了地图。但是当我移动播放器时,地图会在大约 1 秒后消失(我认为是 clearRect 画布)并且在地图出现之后。
所以,我的问题是这个令人讨厌的第二个画布是黑色的。
编码。
function pinta(){
var mirror = renderToCanvas(canvas.width, canvas.height, function (ctx) {
ctx.clearRect(0,0,canvas.width,canvas.height);
//antes de pintar debemos calcular la traslacion
////////////////////////////////////////////////
var moverX=canvas.width/2-players[yo].x;
var moverY=canvas.height/2-players[yo].y;
ctx.translate(moverX,moverY);
pinta_terreno();
pinta_players();
function pinta_players()
{
for( var player in players ) {
var i=player,
x=players[i].x;
y=players[i].y;
var img=new Image(25,25);
if(i==2)img.src="/img/player2.png";
else img.src="/img/player1.png";
ctx.drawImage(img,x,y);
}
}
function pinta_terreno()
{
// donde estoy en tiles
var min_x=(-canvas.width+players[yo].x)/TAM_TILE;
var max_x=(canvas.width+players[yo].x)/TAM_TILE;
var min_y=(-canvas.width+players[yo].y)/TAM_TILE;
var max_y=(canvas.width+players[yo].y)/TAM_TILE;
///////////////////////
for(var i=min_x;i<=max_x;i++)
for(var j=min_y;j<=max_x;j++)
{
var x=i*TAM_TILE;
var y=j*TAM_TILE;
try
{
if(mapa[i][j]!=null && mapa[i][j]!="undefined")
{
var terreno=new Image(25,25);
terreno.src="/img/terrain/"+mapa[i][j]+".png";
ctx.drawImage(terreno,x,y);
}
}catch(e)
{
}
} // del for(var j=0;j<(canvas.height/TAM_TILE);j++)
} // del pintaterreno
});
context.clearRect(0,0,canvas.width,canvas.height);
context.drawImage(mirror, 0, 0);
}