Javascript 将图像移动到指定的最小值
我有密码Javascript 将图像移动到指定的最小值,javascript,animation,positioning,Javascript,Animation,Positioning,我有密码 $(document).keydown(function (key) { switch (parseInt(key.which, 10)) { case 38://up mObj.animate({ top: "-=100px" }); mObj.animate({ top: "+=" + change + "px"
$(document).keydown(function (key) {
switch (parseInt(key.which, 10)) {
case 38://up
mObj.animate({
top: "-=100px"
});
mObj.animate({
top: "+=" + change + "px"
});
break;
default:
break;
}
});
这将使我的图像在向上按钮上正确地上下移动,假设马里奥在空中时不再按下向上按钮。我想通过一种方法来纠正这种情况(当Mario在空中时无法点击),比如我在代码第43-46行中找到的尝试
本质上,我想让马里奥在不被提升的情况下,一路下降到设定的最低水平。关于如何让它这样做或指出我的替代方法(第43-46行中注释的方法)不起作用的原因,有什么帮助吗?作为一种即时解决方案,您可以尝试使用以下方法:
$(document).ready(function () {
var jumping = false;
$(document).keydown(function (key) {
switch (parseInt(key.which, 10)) {
case 38://up
if (!jumping) {
jumping = true;
var jumpUp = new $.Deferred();
var jumpDown = new $.Deferred();
mObj.animate({
top: "-=100px"
}, {
done: function () {
jumpUp.resolve();
}
});
mObj.animate({
top: "+=" + change + "px"
}, {
done: function () {
jumpDown.resolve();
}
});
$.when(jumpUp, jumpDown).done(function () {
jumping = false;
});
}
break;
default:
break;
}
});
});
它基本上只是有一个马里奥是否在跳跃的“状态”。当按下“向上”箭头时,马里奥正在跳跃。一旦让他上下移动的动画完成,马里奥就不再跳跃了。因此,当Mario跳跃时,该函数忽略“向上”键。我确信有一种更优雅的方式(比如内置于.animate
)但这就是我想到的
所以很明显,为了测试它,试着在马里奥跳跃的任何时候按下“向上”键……它不应该做任何事情
我没有过多地研究它,但我想知道为什么你有一个移动马里奥的
setInterval
?我的做法是只听keydown
事件。如果是“向上”箭头,则设置它的动画,使其向上移动,然后再向下移动(就像您和我在这里协助的那样)。如果是左箭头,则设置他向左移动设定距离的动画。如果是右箭头,则设置他向右移动设定距离的动画。是否有理由让setInterval
不断检查按键?也许我遗漏了什么。我使用setInterval
来确保左右移动的平稳性,这样我就有了一个不断更新的功能(不知道如何做),并测试该JSFIDLE中未包含的其他条件。非常感谢你!问题:new$.Deferred()做什么
和.resolve()代码>做什么?