我正在开发一个小游戏,我需要使用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) ;
}
答案 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) ;
}