$("html").keydown(function(event){
if(event.which == "37")
$("#hero").animate({"left" : "-=30px"});
if(event.which == "39")
$("#hero").animate({"left" : "+=30px"});
if(event.which == "38")
$("#hero").animate({"top" : "-=30px"});
if(event.which == "40")
$("#hero").animate({"top" : "+=30px"});
});
似乎已按下所有按键的队列, 当方向改变时,我需要这个队列为空。 因为如果我按住左键几秒钟然后按向右键, “#hero”将会离开很长一段时间然后再向右走。
答案 0 :(得分:2)
您必须停止当前动画以避免这种情况。试试这个。
$("html").keydown(function(event){
if(event.which == "37")
$("#hero").stop(true).animate({"left" : "-=30px"});
if(event.which == "39")
$("#hero").stop(true).animate({"left" : "+=30px"});
if(event.which == "38")
$("#hero").stop(true).animate({"top" : "-=30px"});
if(event.which == "40")
$("#hero").stop(true).animate({"top" : "+=30px"});
});
.stop( [clearQueue] [, jumpToEnd] )
参考:http://api.jquery.com/stop/
clearQueue - 指示是否删除排队动画的布尔值 同样。默认为false。 jumpToEndA - 指示是否的布尔值 立即完成当前动画。默认为false。
答案 1 :(得分:1)
$("#hero").stop().animate( ... );
应该够了
答案 2 :(得分:0)
如果您没有对动画进行排队,那么您可以让对角线对象进行动画处理:
$("html").keydown(function(event){
if(event.which == "37") $("#hero").animate({"left" : "-=30px"}, { queue : false });
if(event.which == "39") $("#hero").animate({"left" : "+=30px"}, { queue : false });
if(event.which == "38") $("#hero").animate({"top" : "-=30px"}, { queue : false });
if(event.which == "40") $("#hero").animate({"top" : "+=30px"}, { queue : false });
});
答案 3 :(得分:0)
检查我的demo,其中我使用最多2个击键来平滑过渡。