在TouchEvent上发布不起作用

时间:2011-08-12 21:19:48

标签: java android touch

这是我在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。如果你在屏幕上点击两次,程序就会崩溃。

1 个答案:

答案 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
    }
}