我正在使用jQuery创建交互式体验。我试图让它成为我的角色可以进入多个房间。
$(document).keydown(function(e) {
switch (e.which) {
case 39:
$("#barry").attr("src", "img/characters/BarryBallRight.png")
$("#barry").stop().animate({
left: 1021
}, 1250, function() {
position = $(this).position();
getCurrentPos(position);
if (barryPosX > $("#canvas").width()) {
if (state == 0) {
state = 1
changeBackground(state);
// reset barry
$(this).css({
'left': '-100px'
});
$(this).stop().animate({
left: '+=150px'
})
};
if (state == 1) {
state = 2;
changeBackground(state);
// reset barry
$(this).css({
'left': '-100px'
});
$(this).stop().animate({
left: '+=150px'
})
};
};
})
我可以看到的问题是,运行的最后一个状态会覆盖前一个状态,这意味着changeBacktround()
函数将更改设置的最新state
的背景,即{{1 }}
我知道我缺少一些逻辑。
请注意,2
函数只会检索屏幕上的当前getCurrentPos()
位置。 $("#barry")
函数是switch语句,它接受当前状态并相应地更改屏幕背景。
提前致谢。
答案 0 :(得分:2)
if (state == 0) {
state = 1
changeBackground(state);
// reset barry
$(this).css({
'left': '-100px'
});
$(this).stop().animate({
left: '+=150px'
})
} else if (state == 1) {
state = 2;
changeBackground(state);
// reset barry
$(this).css({
'left': '-100px'
});
$(this).stop().animate({
left: '+=150px'
})
};
据我所知,你需要使用else if。现在他总是进入第二个条件,如果状态从0开始。如果它进入条件'state == 0'或'state == 1'条件但不进入两者