使用isShiftDown()两次

时间:2015-12-11 20:54:49

标签: java keypress keylistener

我正在开发一个小游戏,我需要使用isShiftDown两次,第一次使用Shift +点击时,一个框变为绿色,当他在第二次Shift +点击同一个框时她改变颜色变红了。这是我已经完成的但是它不起作用,事实上我第一次移动+点击一个框变为绿色((字节)6),但我不知道如何移动+点击一秒时间。

boolean count = false;
public synchronized void mouseClicked(MouseEvent e) {
    synchronized (gameModel) {
        int width = getGameX(e) ;
        int height = getGameY(e) ;
        if (e.isShiftDown() && count == false){
            gameModel.set(width, height, (byte)6);
            count = true;
        }
        if (e.isShiftDown() && count == true){}
        else {
            byte c = (byte)1 ;
            gameModel.set(width,height,c);
        }
        notify(gameModel) ;
    }

2 个答案:

答案 0 :(得分:1)

您的第一个if块将count设置为true。你的第二个if块检查count是否为真(肯定是这样,因为你只是设置为真),所以else块无法触发。

也许你的意思更像是这样:

if (e.isShiftDown() && !count){
    gameModel.set(width, height, (byte) 6);
    count = true;
} else if (e.isShiftDown()) {
    byte c = (byte) 1;
    gameModel.set(width,height,c);
}

答案 1 :(得分:0)

我无法测试它,但我认为这应该可行(删除第二个if语句,如下面的代码所示):

boolean count = false;
public synchronized void mouseClicked(MouseEvent e) {
    synchronized (gameModel) {
        int width = getGameX(e) ;
        int height = getGameY(e) ;
        if (e.isShiftDown() && count == false){
            gameModel.set(width, height, (byte)6);
            count = true;
        }else if (e.isShiftDown() && count == true){
            byte c = (byte)1 ;
            gameModel.set(width,height,c);
        }
        notify(gameModel) ;
    }