2014-06-11 38 views
-1

嗨,我想知道爲什麼AND運營商不在這裏工作?即使沒有操作員,它在包含它時會很好地工作嗎?AND運算符不工作onKeyUp方法

else if (keyCode == KeyEvent.KEYCODE_CTRL_LEFT && keyCode == KeyEvent.KEYCODE_S) { 
    int visibility=new_Sell_order_cart.getVisibility(); 
    if(visibility==View.VISIBLE) 
    { 
     openCart(); 
    } 
} 

如果它不可能是如何jQuery的開發者實現這一目標

 if (e.keyCode == 65 && e.ctrlKey) { 
     alert('ctrl A'); 
    } 
}); 
+2

是ü尋找OR操作?當兩個語句中的任何一個或兩個都是'false'時,AND將返回false ... –

+5

您如何期待'keyCode'等於兩個不同的東西? – PakkuDon

+0

除非你有量子計算機,keyCode不能同時有兩個不同的值 –

回答

1

鍵代碼不能兩個鍵一次。它可以是CTRL_LEFT或KEYCODE_S。

該語句返回false,因爲任何一個都是true,但不是兩者都是。

(它像a==3 && a==4,一個不能爲3和4的同時)

keyCode == KeyEvent.KEYCODE_CTRL_LEFT && keyCode == KeyEvent.KEYCODE_S 

也許你正在尋找或(||)操作:

else if (keyCode == KeyEvent.KEYCODE_CTRL_LEFT || keyCode == KeyEvent.KEYCODE_S) { 

編輯:

如果你想檢查兩個按鍵。這是this後建議的解決方案。

其中一種方法是跟蹤自己當前的密鑰是否爲 。

當您得到keyPressed事件時,將新密鑰添加到列表中;當您 收到keyreleased事件時,請從列表中刪除該密鑰。

然後在您的遊戲循環中,您可以根據鍵列表 中的鍵進行操作。

0

我得到了一個解決方案,我知道它不符合標準,但它滿足了我的要求。

 else if (isCTRLisPressed(17) && keyCode == KeyEvent.KEYCODE_S) { 
     int visibility=new_Sell_order_cart.getVisibility();  
     if(visibility==View.VISIBLE) 
     { 
      openCart(); 
     } 
    }  

public boolean isCTRLisPressed(int i){ 
if(i==17){ 
    System.out.println(" key code of ctrl"+i); 
    return true; 
} 
else { 
    System.out.println("key code in else "+i); 
    return false; 
} 
} 
+0

這是一個怎樣的解決方案? –

+0

CTRL keycode是17 – DJhon

+0

那麼在這裏使用AND運算符是什麼?直接你在這裏硬編碼,並且當值爲17時返回'true' ...所以你現在的條件變成了'if(true && keyCode == KeyEvent.KEYCODE_S)'其中'&&'操作符是無用的...... –