在事件更改时更新变量jquery

时间:2016-06-06 07:32:53

标签: javascript jquery html5

我正在使用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语句,它接受当前状态并相应地更改屏幕背景。

提前致谢。

1 个答案:

答案 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'条件但不进入两者