![](/img/trans.png)
[英]Vibrate until the button is pressed and stops vibrating when the button is unpressed (or the finger is taken off)
[英]Keeping button as pressed when other buttons are unpressed
我有三個按鈕,它們是屏幕上的圖像。 當用戶在按鈕區域內的屏幕上按下時,表示按鈕被按下的布爾值將變為true。 除我有三個按鈕外,此方法效果很好,因此當我按住兩個按鈕並抬起一個按鈕時,所有按鈕都會變成我從未按下過的按鈕。 我知道在哪里解決此問題,但我不確定如何解決。 我該如何解決這個問題,以便在按下兩個按鈕的情況下,當我從一個按鈕上抬起手指時,另一個按鈕不會變成“未按下”狀態,而是保持“按下”狀態?
boolean B1Pressed = false;
boolean B2Pressed = false;
boolean B3Pressed = false;
int len = touchEvents.size();
for (int i = 0; i < len; i++) {
TouchEvent event = touchEvents.get(i);
if (event.type == TouchEvent.TOUCH_DOWN) {
if (inBounds(event, 340,512,140,140)) {
B1Pressed = true;
Log.d("GameScreen", "Button 1 Pressed");
// Button 1
}
if (inBounds(event, 340,320,140,140)) {
B2Pressed = true;
Log.d("GameScreen", "Button 2 Pressed");
// Button 2
}
if (inBounds(event, 340,120,140,140)) {
B3Pressed = true;
Log.d("GameScreen", "Button 3 Pressed");
// Button 3
}
}
if (event.type == TouchEvent.TOUCH_UP) {
B1Pressed = false;
B2Pressed = false;
B3Pressed = false;
}
private boolean inBounds(TouchEvent event, int x, int y, int width,
int height) {
if (event.x > x && event.x < x + width - 1 && event.y > y
&& event.y < y + height - 1)
return true;
else
return false;
}
這就是問題:
if (event.type == TouchEvent.TOUCH_UP) {
B1Pressed = false;
B2Pressed = false;
B3Pressed = false;
}
只要注冊了TouchEvent.TOUCH_UP事件,就會釋放所有按鈕。 嘗試使用相同的邏輯來確定按下了哪些按鈕來確定釋放了哪個按鈕。
if (event.type == TouchEvent.TOUCH_UP) {
if (inBounds(event, 340,512,140,140)) {
B1Pressed = false;
Log.d("GameScreen", "Button 1 Released");
// Button 1
}
if (inBounds(event, 340,320,140,140)) {
B2Pressed = false;
Log.d("GameScreen", "Button 2 Released");
// Button 2
}
if (inBounds(event, 340,120,140,140)) {
B3Pressed = false;
Log.d("GameScreen", "Button 3 Released");
// Button 3
}
}
這似乎是實現此目標的一種方式。 但是,如果這就是您想要的方式,也許只是切換boolean標志就可以完成您所需要的。
只需將第一個if條件更改為
if (event.type == TouchEvent.TOUCH_UP || event.type == TouchEvent.TOUCH_DOWN ) {
當您設置布爾單位時,請將其反轉。 像這樣
BxPressed = !BxPressed;
您將x替換為數字1-3的位置。
然后,如果要一起處理UP事件,則可以刪除第二個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.