1

さて、私はsurfaceViewで簡単なアプリを作成しています。ここでは、画面の上部から下部に移動するボールのビットマップがあります。下部に到達すると、再び上部に表示され、再び落下し始めます。

次に、ボールが落ちているときにクリックすると画面の上部に戻るように作成しようとしました。ただし、クリックできないため(1ピクセルしかないため)、問題が発生しています。onTouchListenerをクリックの座標getX()getY()座標に設定しました。クリックのx座標とy座標が、ボールの現在の位置のx座標とyに等しい場合、ボールは画面の上部に戻ります。

ただし、これは機能しません。ボールをクリックできるようにするには、その時点でボールがあった正確な中央のピクセルをクリックする必要があるためです。だから私の質問は私がどのように言うかです:クリックがボールの現在の位置に近いか、ほぼ等しい場合は、トップに戻ります。私はこれに慣れていないので、私がお詫びする愚かな質問をしているなら、私は学ぶために最善を尽くしています。そして、助けてくれてありがとう。それは有り難いです。

4

1 に答える 1

3

それはあなたのために働くはずです。onTouch メソッドをオーバーライドするだけです。

@Override
    public boolean onTouch(View v, MotionEvent me)
    {
        try
        {
            Thread.sleep(50);
        } catch (InterruptedException e)
        {
            e.printStackTrace();
        }
        switch (me.getAction())
        {
        case MotionEvent.ACTION_DOWN:
            x = me.getX();
            y = me.getY();
            break;
        case MotionEvent.ACTION_UP:
            x = me.getX();
            y = me.getY();
            break;
        case MotionEvent.ACTION_MOVE:
            x = me.getX();
            y = me.getY();
            break;
        case MotionEvent.ACTION_OUTSIDE:
            x = 100;
            y = 200;
            break;
        }
        return true;
    }
于 2012-03-10T11:06:14.690 に答える