我为游戏实现了一个简单的可拖动世界地图,但是使用不同的浏览器时性能会有所不同——这很明显。我使用了 256x256 像素图块,脚本动态渲染数字以填充整个窗口和边框。
原型: http: //mt111102.students.fhstp.ac.at/draggable/game.html
目前我只是通过在 mousemove 上设置top
和样式属性来做到这一点。left
这是一个片段:
mouseDown : function(e) {
Map.myPreventDefault(e);
dx = map.offsetLeft - e.clientX;
dy = map.offsetTop - e.clientY;
map.addEventListener('mousemove', Map.divMove, false);
},
divMove : function(e) {
Map.myPreventDefault(e);
map.style.position = "absolute";
map.style.cursor = "move";
map.style.left = e.clientX + dx + "px";
map.style.top = e.clientY + dy + "px";
}
稍后当拖动到边界时,我将使用 XHR 加载新图块并在另一端删除旧图块以保持性能,以便包装器不会变大。
我的问题是:使用 CSS translate 而不是仅仅设置top
andleft
属性会更高效吗?你们有什么技巧可以让它更流畅吗?
在 Firefox 中,原型几乎可以完美运行,但在 Chrome 等 Webkit 浏览器中,它看起来不太好——它有点滞后。我只是想知道谷歌地图是如何让它在每个现代浏览器中以同样的流畅度工作的。