这是我在onTouchEvent中使用的方法代码:
public void touch(MotionEvent event) {
// starta = "klicka för att börja";
if (event.getAction() == MotionEvent.ACTION_DOWN) {
starta = "Click to start";
fN.aktivitetNer.start();
if (event.getAction() == MotionEvent.ACTION_CANCEL) {
if (y == -300) {
touch(event);
}
else if (y > -300) {
fN.aktivitetNer.interrupt();
fU.aktivitetUpp.start();
p++;
}
}
else if (y2 <= y + xMax) {
fN.aktivitetNer.interrupt();
fU.aktivitetUpp.start();
p = 0;
}
}
}
应该发生的事情是一把刀在一个线程(fN.aktivitetNer)的帮助下快速下降,如果你用刀切开手指(y2)你松开,如果你足够快,你得分一分(p ),当你松开或赢得刀时,将再次使用另一个螺纹(fU.aktivitetUpp) 我知道它并不完美但它现在正在工作! PS。如果你在屏幕上点击两次,程序就会崩溃。
答案 0 :(得分:0)
当然,它肯定不会以当前的形式工作,因为代码永远不会进入你的第二个if语句。
你的第一个if语句断言event.getAction() == MotionEvent.ACTION_DOWN
。如果这是真的,则event.getAction()
不能等于MotionEvent.ACTION_CANCEL
,您将永远不会输入该代码块。
由于我不知道你的主题是什么我无法确定,但你可能想要更像这样的东西:
public void touch(MotionEvent event)
{
// starta = "klicka för att börja";
int actionCode = event.getAction();
if (actionCode == MotionEvent.ACTION_DOWN)
{
//Start to drop knife
}
else if (actionCode == MotionEvent.ACTION_CANCEL || actionCode == MotionEvent.ACTION_UP)
{
if (Knife is falling, and touch point is below knife)
{
//Add one to score
}
else if (Knife is falling, and touch point is above knife)
{
//Reset score to 0
}
}
else if (Knife has already fallen and still touching screen)
{
//Reset score to 0
}
}