0

画面にホイールがあり、回転可能です。ユーザーがホイールをスワイプすると、スワイプの方向に基づいて回転を開始する必要があります。回転方向(時計回りまたは反時計回り)以外のすべての機能を終了しました。ユーザーがホイールをスワイプする方向を見つけるのに役立つ人は誰でもいます。

ありがとう

4

2 に答える 2

0

回転は

解決策1:

時計回り

  • touch point.yがホイールの中心より上にあり、スワイプが小さいtouchpoint.xから大きいxまでの場合。また
  • point.yがホイールの中心より下にあり、スワイプが大きい方のpoint.xから小さい方のxになっている場合。

反時計回り:
反対側:

  • point.yがホイールの中心より下にあり、スワイプが小さいタッチポイント.xから大きいxまでの場合。また
  • point.yがホイールの中心より上にあり、スワイプが大きい方のpoint.xから小さい方のxまでの場合。

より複雑な数学を使ったより良い解決策がありますが、それは単純なものです。

更新これもシンプルで優れています!

解決策2:解決策2:

ホイールの中心(x、y)とタッチ(x、y)の間の角度を計算します。

 double angleRad =   atan2(dy/dx), where dy = touch.y - wheel.y, and dx analog.

タッチイベントごとにこれを行います。角度が増加している場合は時計回り、それ以外の場合は反時計回りです。

于 2013-01-22T17:20:26.283 に答える
0
_direction = 1;
if(_startPoint.y < rotarCenter.y) {

    if(_startPoint.x > endTouchPoint.x)
        _direction = -1;
}
else if(_startPoint.y > rotarCenter.y) {

    if(_startPoint.x < endTouchPoint.x)
        _direction = -1;
}

if(_startPoint.x < rotarCenter.x && endTouchPoint.x < rotarCenter.x) {

    if(_startPoint.y < endTouchPoint.y)
        _direction = -1;
    else
        _direction = 1;
}
else if(_startPoint.x > rotarCenter.x && endTouchPoint.x > rotarCenter.x) {

    if(_startPoint.y > endTouchPoint.y)
        _direction = -1;
    else
        _direction = 1;
}
于 2013-01-23T07:04:45.063 に答える