创建游戏图层#gamecanvas(游戏图层)、#scorescreen(得分显示图层)、#gamestartscreen(游戏开始图层)、#levelselectscreen(关卡选择图层)、#loadingscreen(资源加载图层)、#endingscreen(游戏结束图层)所有图层共用.gamelayer,所有图层放于#gamecontainer中。
解决动画函数requestanimationframe兼容性问题:
1 (function(){
2
var vendors = ['o','webkit','moz','ms'];
3
var lastTime = 0;
4
for(var i=0; i<vendors.length&&!window.requestAnimationFrame; i++){
//循环检测当前浏览器支持的方法名
5
window.requestAnimationFrame = window[vendors[i]+'requestAnimationFrame'];
//将不同浏览器动画函数名统一
6
window.cancelAnimationFrame = window[vendors[i]+'CancelAnimationFrame']||
7
window[vendors[i]+'CancelRequestAnimationFrame'];
8 }
9
if(!window.requestAnimationFrame){
//检测浏览器是否支持动画函数
10
window.requestAnimationFrame =function (callback,element) {
11
var currTime = new Date().getTime();
12
var timeToCall = Math.max(0,16-(currTime-lastTime));
//理想刷新率为60hz(每1/60秒重绘一次),不断尝试修正刷新率。
13
var id = window.setTimeout(callback(),timeToCall);
//timeToCall为0时各浏览器将采用最小调用单位时间。
14
lastTime =currTime+timeToCall;
//执行后的时间。
15
return id;
16
}
17 }
18
if (!window.cancelAnimationFrame){
19
window.cancelAnimationFrame = function(id){
20
clearTimeout(id);
21
}
22 }
23
24 }());