2016-06-19 11 views
1

LibGDX.scene2d.uiでゲーム用のGUIを構築していて、入力を処理しようとしているときに問題があります。私は、ボタンが押されたときに何かが起こるようにする、次のコードを持っているが、それは動作しません:LibGDX.scene2dの入力で状態チェックが間違っている

enterButton.addListener(new InputListener() { 
     @Override 
     public boolean touchDown(InputEvent e, float x, float y, int p, int b) { 
      Gdx.app.log("touched", "down"); 
      return true; 
     } 
     @Override 
     public void touchUp(InputEvent e, float x, float y, int p, int b) { 
      Gdx.app.log("touched", "up"); 
      if(x > enterButton.getX() && x < enterButton.getRight() && y > enterButton.getY() && y < enterButton.getTop()) { 
       Gdx.app.log("cond", "cursor on actor"); 
       if(validate(loginField.getText(), passField.getText())) { 
        Gdx.app.log("cond", "validated"); 
        openMenu(); 
       } 
      } 
      Gdx.app.log("untouched", "up"); 
     } 
    }); 

しかし、実質的に同一のコード作業を正しく:

registerButton.addListener(new InputListener() { 
     @Override 
     public boolean touchDown(InputEvent e, float x, float y, int p, int b) { 
      return true; 
     } 
     @Override 
     public void touchUp(InputEvent e, float x, float y, int p, int b) { 
      if(x > registerButton.getX() && x < registerButton.getRight() && y > registerButton.getY() && y < registerButton.getTop()) { 
       registerWindow.setVisible(true); 
       baseWindow.setVisible(false); 
      } 
     } 
    }); 

を私はenterButtonをシングルクリックした後LibGDXロギングでこの出力を得る:

touched: down 
touched: up 
untouched: up 

何が問題なのですか?

+2

ここで問題は何ですか?説明できますか ? –

+0

ChangeListenerを使用して、変更されたメソッドをオーバーライドして、ボタンを押すだけで反応します。 – Tenfour04

答えて

2

あなたはタッチが境界内であるかどうかをチェックするためにClickListenerを使用して試すことができ、そのような:あなたはどこクリック見ることができるように

enterButton.addListener(new ClickListener() { 
    @Override 
    public void touchDown(InputEvent event, float x, float y, int pointer, int button) { 
     return true; 
    } 

    @Override 
    public void touchUp(InputEvent event, float x, float y, int pointer, int button) { 
     if (isOver()) { 
      if(validate(loginField.getText(), passField.getText())) { 
       openMenu(); 
      } 
     } 
    } 
}); 

また俳優にデバッグフラグを設定してみてくださいすることができます実際に使用している範囲はenterButton.debug();

関連する問題