2013-04-09 84 views
0

我试着画一个游戏地图来使用瓷砖地图编辑器创建一个JSON文件的画布。tilemap的闪烁在更新

我相信即时通讯几乎没有,但我有一个问题。如果我把调用加载地图在我更新的功能我得到的地图在画布上闪烁。我想这是因为我正在清理每个更新的画布。

所以,如果我移动调用加载像game_settings功能主要js文件现场其他地方(这是我想要的)我只是得到了一个空白的画布。

这是我的主要js文件:

var canvas; 
var ctx; 

$(document).ready(function(){ 

canvas = document.getElementById("TBG"); 
ctx = canvas.getContext("2d"); 

var game_width = canvas.width; 
var game_height = canvas.height; 

var scene = new Scene(); 


$('#new_but').click(function(){ 
    game_init("new"); 
}); 

$('#load_but').click(function(){ 
    game_init("load"); 
}); 


function game_init(state) { 
    game_settings(state); 
    update(); 
} 

function game_settings(state){ 
    if(state == "load"){ 
     ui.load_game(); 

    } 
    else{ 
     //set beginning params 
     ui.new_game(); 
    } 
} 


function update(){ 

    ctx.clearRect(0,0,canvas.width,canvas.height); 
    scene.load("level_01"); 

    setTimeout(update,1); 
} 
}); 

我的问题:我应该在哪里被调用scene.load方法?

如果哟想看到的一幕类文件是here

感谢

+0

谁能帮助? – 2013-04-09 19:30:42

回答

0

我想tilemap的闪烁的问题不是由帆布结算引起的,但对于

scene.load(); 

称为每次都在

更新()

它需要一些时间来加载瓦,所以瓦装载期间画布将是空白(因为“ctx.clearRect(0,0,canvas.width,canvas.height);”一直称为),并且在装入瓦片之后,画布将被重新填充。所以你会看到闪烁的效果。 两种方法将有助于来解答这个问题:

  1. ,直到新的瓷砖被加载并
  2. 本地存储的瓦块已被载入不要清除画布。

这些可避免闪烁问题,并希望将helpfut给你。