updated 地图静态时不反复进行绘制计算,而是缓存

This commit is contained in:
mumuy 2016-05-10 00:40:06 +08:00
parent 67f551d9c0
commit d1437651c9
2 changed files with 15 additions and 1 deletions

15
game.js
View File

@ -110,6 +110,7 @@ function Game(id,params){
y_length:0, //二维数组y轴长度
frames:1, //速度等级,内部计算器times多少帧变化一次
times:0, //刷新画布计数(用于循环动画状态判断)
cache:false, //是否静态(如静态则设置缓存)
update:function(){}, //更新地图数据
draw:function(){}, //绘制地图
};
@ -311,6 +312,7 @@ function Game(id,params){
map.stage = this;
map.y_length = map.data.length;
map.x_length = map.data[0].length;
map.imageData = null;
this.maps.push(map);
return map;
};
@ -345,7 +347,18 @@ function Game(id,params){
map.times = f/map.frames; //计数器
}
map.update();
map.draw(_context);
if(map.cache){
if(!map.imageData){
_context.save();
map.draw(_context);
map.imageData = _context.getImageData(0,0,_.width,_.height);
_context.restore();
}else{
_context.putImageData(map.imageData,0,0);
}
}else{
map.draw(_context);
}
});
}
if(stage.items.length){

View File

@ -143,6 +143,7 @@
x:60,
y:10,
data:_DATA,
cache:true,
draw:function(context){
for(var j=0; j<this.y_length; j++){
for(var i=0; i<this.x_length; i++){