我有一张游戏的2d地图,每次用户移动地图时,都会从服务器重新加载新数据。在加载(异步!)ajax请求时,将忽略每个用户与地图的交互。因此,如果我想移动地图并执行mousedown
- > mousemove
- > mouseup
,这些事件只会被忽略。
我使用jQuery
1.5.1
和1.6.4
进行了尝试。
我的代码:
$map_outer.mousedown(function(e) {
e.preventDefault();
engine.map.mouse_down_coords = {x: e.pageX, y: e.pageY};
engine.map.mouse_is_down = true;
engine.map.mouse_down_offset = $map.offset();
}).mouseup(function(e) {
if (!engine.map.mouse_is_down) return;
$.ajax({
type: 'post',
data: {
//...
},
success: function(data) {
//....
},
dataType: 'json',
async: true
});
engine.map.mouse_is_down = false;
}).mouseleave(function() {
engine.map.mouse_is_down = false;
}).mousemove(function(e) {
e.preventDefault();
if (!engine.map.mouse_is_down) return;
//... move the map
});
为什么这会阻止浏览器几百毫秒? (本地主机上的某些类型300毫秒!)
提前致谢,
岛