布尔逻辑误解

时间:2014-11-22 02:36:12

标签: javascript jquery

我在这里遇到问题。在我的游戏开始时,它要求" Ready"如果你点击它,它将重置所有内容,以防万一游戏出现故障,它将播放用户在游戏开始时选择的适当级别(主菜单)。我试图为每个级别制作布尔值,所以我可以告诉他或她在玩什么级别这是我尝试过的并且没有运气。

var playingLevel1 = false;
var playingLevel2 = false;
$('#level1Button').click(function() {
  playingLevel1 = true;
});
$('#level2Button').click(function() {
  playingLevel2 = true;
});
$('#ready').click(function() {
  if(playingLvl2) {
    startLvl1(); //and that would reset and start the level one
  }
  if(playingLvl2) {
    startLvl2(); //and that would reset and start the level two
  }
});

你会认为这会奏效吗?但它并没有。我不认为我可能正在使用布尔吗?

我只输入了示例代码,但它与原始代码完全相同。

好的,所以我决定使用一个整数,但仍然无法在这里工作

var currentLevel = 0;
    $('#level1').click(function () {
        currentLevel = 1;
        $("#mainMenu").hide();
        levelOne();
    });
    $('#level2').click(function () {
        currentLevel = 2;
        $("#mainMenu").hide();
        levelTwo();
    });

   function startLvl1() {
        $("#levelOne").css('margin-top', '-1520px');
        $("#player").css('border', 'solid 1px green');
        $("#player").css('margin-left', '223px');
        $('#levelComplete').hide();
        $('#levelOne').animate({
            'margin-top': '+=1520px'
        }, speed);
        handleCollisions();
    }
     function startLvl2() {
        $("#levelOne").css('margin-top', '-4560px');
        $("#player").css('border', 'solid 1px green');
        $("#player").css('margin-left', '223px');
        $('#levelComplete').hide();
        $('#levelOne').animate({
            'margin-top': '+=4560px'
        }, speed);
        handleCollisions();
    }
    $('#yes').click(function () {
        if (currentLevel == 1) {    
                startLvl1();
        }else if (currentLevel == 2) {
         startLvl2();   
        }

2 个答案:

答案 0 :(得分:2)

不考虑使用布尔值,而是考虑存储级别数的整数。

var currentLevel = 0;

$('#level1Button').click(function() {
  currentLevel = 1;
});
$('#level2Button').click(function() {
  currentLevel = 2;
});

$('#ready').click(function() {
  if (currentLevel == 1)
    startLvl1();
  else if (currentLevel == 2)
    startLvl2();
});

这应该是正确的方法! :)

答案 1 :(得分:0)

布尔变量拼写错误?即,'playingLevel1'是定义的变量,但你的if语句有'playingLvl1'。因此,由于未定义该变量,因此始终为false。同样适用于'playingLevel2'。