mousePressed函数似乎不止一次按下

时间:2013-10-28 21:20:09

标签: java mouse processing

我是Processing programming language的新手,目前正在尝试与我的大学团队一起制作基于回合制的游戏。但是我在处理函数中遇到了一个名为mousePressed的问题。问题似乎是mousePressed函数不止一次完成,即使我只按鼠标一次。我可能错了,但任何帮助都会很好。

我有5个按钮,如果我点击其中一个按钮,它会在我的ArrayList中添加X个玩家,之后它应该继续第一个玩家转向骰子,可以通过点击屏幕滚动。然而,当我点击我的添加播放器按钮时,它也会掷骰子,但我希望玩家选择数量的玩家,然后再次点击屏幕滚动骰子。

代码:

  //this is my "if" the player choose to have two players, the first player turns begin

  if(player.get(0) == 1){
        fill(255);
        text("First player turn", width/2, height/5);
        noLoop();

        dice.display();
        dice.mouseRoll();


 // here you have my dice roll function
  void mouseRoll(){                    
    if(mousePressed==true){
      dice.roll(1,4);  // just a random between the two number
        noLoop();

1 个答案:

答案 0 :(得分:7)

显然,你在这里的代码是在你的draw()循环中。每秒循环超过25次(或更多次),每次检查鼠标是否被按下。当然,除非你真的很快,否则它会不止一次触发。

执行此操作的正确方法不是使用if语句,而是使用void mousePressed(),每次单击都会触发一次!

编辑: 根据您的评论样本:

  

是否可以按下第一个按钮以获得玩家   然后滚动骰子,所以它不会一键完成所有事情

为了做到这一点,你需要添加一个布尔值,表示玩家是否被选中。如果已经选择了玩家,则掷骰子,否则选择一个玩家! (或开关转动?)

boolean playerSelected = false;
void mousePressed() {
  if(!playerSelected) {
    // select a player here or switch turns
    fill(255);
    text("First player turn", width/2, height/5);
    playerSelected = true;
  }
  else { 
    dice.display();
    dice.roll(1,4);
    playerSelected = false;
  }
}