0
首先對不起我的英語:(HTML5畫布上移動TiledMap類背景
我在與畫布元素的樂趣,我試圖讓一個gamebrowser,但我解決不了這個問題。
我得到了地圖圖塊的二維數組。
我得到的位置的球員,我翻譯的情況下(將它繪製在畫布的中心),然後我繪製地圖考慮的絕對位置地圖,但是當我移動播放器時,地圖會消失大約1秒arRect畫布我認爲)和地圖出現後。
所以,我的問題是這個煩人的第二個畫布在黑色。
代碼。
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);
}
這可以幫助我,我想... http://batiste.dosimple.ch/blog/2011-06-27-1/ – user1886506