2013-04-09 9 views
0

Im пытается нарисовать карту игры на холст с помощью файла JSON, созданного файловым редактором.tilemap мерцает при обновлении

Я верю им почти там, но у меня есть одна проблема. если я поставил вызов для загрузки карты в моей функции обновления, я получаю карту, мерцающую на холсте. Я думаю, это потому, что я очищаю содержимое каждого обновления.

Так что если я переведу вызов, чтобы загрузить сцену где-нибудь еще в главном файле js, как функция game_settings (именно там, где я хочу), я просто получаю пустой холст.

Вот мой главный 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

Может ли кто-нибудь помочь? –

ответ

0

Я думаю, что проблема о tilemap мерцании не вызвано холст очисткой, но и для

scene.load(); 

называется каждый раз в

обновление()

Это нужно некоторое время, чтобы загрузить плитку, поэтому во время загрузки плитки холст будет пустым (поскольку «ctx.clearRect (0,0, canvas.width, canvas.height);» было), и после того, как плитка загрузится, холст снова будет заполнен. Таким образом, вы увидите мерцающий эффект. два метода будет полезен sovle этой проблемы:

  1. Не очистить холст недо загружена новая плитка и
  2. Местный магазин плитка была загружена.

Это может избежать проблескивания и надеяться, что это поможет вам.

Смежные вопросы