[英]Why is my onTouchEvent being triggered without touching the screen?
第一次觸摸屏幕時,onTouchEvent方法始終說事件為0(MotionEvent.ACTION_DOWN)。 當我停止觸摸屏幕時,我不知道如何報告它。
階段變量告訴它在三部分過程中(開始,停止和釋放)它處於哪個抽頭編號(用於像游戲這樣的彈射器)
public static int stage = 0;
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
stage++;
System.out.println(stage);
handleTouches();
System.out.println(onTouchEvent(event));
return onTouchEvent(event);
}
return true;
}
public void handleTouches() {
if (stage == 1) {
runPowerBar = true;
} else if (stage == 2) {
runPowerBar = false;
tree.startAnimation();
bg.startFlight(power);
}
}
public void update() {
tree.update();
setCoins(context, 0);
//setCoins(context, coins);
if (runPowerBar) {
powerBar.powerBarSlider();
}
System.out.println(runPowerBar);
}
更新方法由MainThread中的以下方法調用
@Override
public void run() {
while (running) {
canvas = null;
try {
canvas = this.surfaceHolder.lockCanvas();
synchronized(surfaceHolder) {
this.gameView.update();
this.gameView.draw(canvas);
}
} catch (Exception e) {} finally {
if (canvas != null) {
try {
surfaceHolder.unlockCanvasAndPost(canvas);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
我希望onTouchEvent告訴我,當我觸摸時動作是向下的,而當我不是時,動作是向上的,但動作保持在0不變。
更新7/22:
好吧,經過一些測試,我發現update方法仍然可以運行,但是第一次繪制時凍結了draw方法,而在第二次單擊后又恢復了繪制方法。 現在也說我放開水龍頭。
似乎那里有一個遞歸函數,您遞歸調用onTouchEvent
帶有ACTION_DOWN
事件的onTouchEvent
。
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
//Start of touch events
stage++;
System.out.println(stage);
handleTouches();
System.out.println(onTouchEvent(event));
//return onTouchEvent(event);
return true;
case MotionEvent.ACTION_UP:
// End of touch events
return true;
case MotionEvent.ACTION_MOVE:
// Moved touch events
return true;
}
return true;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.