【发布时间】:2019-07-20 19:38:50
【问题描述】:
第一次触摸屏幕时,onTouchEvent 方法总是说事件为 0 (MotionEvent.ACTION_DOWN)。当我停止触摸屏幕时,我不知道如何让它报告。
stage 变量告诉它在三部分过程(开始、停止和释放)中它处于哪个水龙头编号(为类似弹射器的游戏制作)
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 更新:
好吧,经过一些测试,我发现更新方法仍然运行,但是 一旦我第一次点击,我的绘图方法就会冻结,并在第二次点击后恢复。当我松开水龙头时,它现在也会显示。
【问题讨论】:
-
考虑
OnTouchListener。 -
您在打印日志时调用 onTouchEvent(event),我认为这不是故意的
-
谢谢,我删除了所有这些,它现在等待我点击它,唯一的事情是它会暂停其他所有内容,直到我再次点击。
标签: java android touch-event