0

ImageViewでジョイスティックを作りたいです。ユーザーはビューに触れて「スティック」を動かします。

ivjoystick.setOnTouchListener(new View.OnTouchListener() {          
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            touch(event);
            return true;
        }
    });

touch メソッドは、ユーザーがビューに触れたときに呼び出され、イベントが検出され、ジョイスティックが必要に応じて機能します。指が「開始点」から離れるとすぐに、onTouch メソッドは (指の動きで) 呼び出されなくなります。ジョイシックがフリーズします。

この動作は、 touch メソッドの動作とは無関係です。ただし、そのコードは次のとおりです。

private void touch(MotionEvent event) {
    if (!(event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE || event.getAction() == MotionEvent.ACTION_UP))
        return;
    double oldx = x;
    double oldy = y;

    x = (event.getX() - centerx) / rpad;
    y = (event.getY() - centery) / rpad;

    if (Math.sqrt(x * x + y * y) > 1) {
        x /= Math.sqrt(x * x + y * y);
        y /= Math.sqrt(x * x + y * y);
    }

    if (event.getAction() == MotionEvent.ACTION_UP) {
        x = 0;
        y = 0;
    }

    if (SystemClock.uptimeMillis() - last < minintervall && event.getAction() == MotionEvent.ACTION_MOVE)
        return;

    if (oldx != x || oldy != y) {
        draw();
        send();
    }

    return;     
}
4

2 に答える 2

0

代わりに、タッチメソッドをオンドラッグリスナーに接続する必要があると思います

于 2013-01-20T20:58:38.270 に答える
0

ImageView は ScrollView 内にありました。より長い動きは、スクロール用のスクロールビューによって何らかの形で取得されました。

スクロールビューを削除しました。

于 2013-01-23T14:03:41.893 に答える