我正在尝试使用jQuery和d pad重新创建旧的Mario游戏,我无法让他跳起来并且在向右/向左移动仍然平稳的情况下跌落一定量。到目前为止,这是我的项目:http://jsfiddle.net/Zeaklous/NpKgc/1/
$(document).ready(function () {
$(document).keydown(function (key) {
switch (parseInt(key.which, 10)) {
case 38:
$(".mario").animate({
top: "-=50px"
});
$(".mario").animate({
top: "+=50px"
});
break;
default:
break;
case 83:
$(".mario").addClass("crouching");
$('.mario').attr('src', 'https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcSstp0TMfI46ImPw3Ynoq8N64Trn9ew70Dzh8NR4u4VLm40nccV');
break;
}
});
});
setInterval(movePlane, 20);
var keys = {};
$(document).keydown(function (e) {
keys[e.keyCode] = true;
});
$(document).keyup(function (e) {
delete keys[e.keyCode];
});
function movePlane() {
for (var direction in keys) {
if (!keys.hasOwnProperty(direction)) continue;
if (direction == 37) { //left
$(".mario").animate({
left: "-=5"
}, 0);
if (!$('.mario').hasClass('flipped')) {
$(".mario").toggleClass("flipped");
}
}
if (direction == 39) { //right
$(".mario").animate({
left: "+=5"
}, 0);
if ($('.mario').hasClass('flipped')) {
$(".mario").toggleClass("flipped");
}
}
if (direction == 40) { //down
if (!$(".mario").hasClass(!"crouching")) {
$(".mario").toggleClass("crouching");
$('.mario').attr('src', 'https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcSstp0TMfI46ImPw3Ynoq8N64Trn9ew70Dzh8NR4u4VLm40nccV');
}
}
}
}
关于我如何做到这一点的任何想法?如图所示,它在跳跃动作完成后向侧面移动。
答案 0 :(得分:2)
你的动画语句是碰撞的。由于您已经在使用间隔,因此无需为左右使用动画:
if (direction == 37) { //left
$(".mario").css({
left: "-=2"
});
if (!$('.mario').hasClass('flipped')) {
$(".mario").toggleClass("flipped");
}
}
/*if (direction == 38) {//up
$(".mario").animate({top: "-=5"}, 0);
}*/
if (direction == 39) { //right
$(".mario").css({
left: "+=2"
});
if ($('.mario').hasClass('flipped')) {
$(".mario").toggleClass("flipped");
}
}