-1

私のアプリには、12 の等しい円、つまり 1 時間のスラブごとに 1 つの円に分割された円があります。円ごとに特定のタップ ジェスチャ機能が必要なので、検出できるように各円に特定のカラー コードを割り当てることを考えました。パイの色に応じて、ユーザーがタップした場所の色。

まず、クリックごとにカラーコードを検出するのを手伝ってください。2 番目に、これらの 12 個のパイに対する非機能的なイメージビューについて助けが必要です。これにより、ユーザーはパイの 12 個の異なる色を見ることができず、単色の円が 1 つしか見えなくなりますが、タップ ジェスチャは常に、私の下にある 12 個のパイで実行する必要があります。 1 つの色付きの円。最後に、巻物についても助けが必要です。

ユーザーが左から右にタップすると新しいセグメントが表示され、その逆も同様になるように、アプリにセグメント化されたスクロールビューを実装しました。アプリには2つのセグメント化されたスクロールビューしかありません。クリックすると、それらのパイのテキスト。私はチームビューアーとスカイプの両方で利用できるので、どんな方法でも助けていただければ幸いです.

4

1 に答える 1

1

半径の異なる 2 つの同心円があるように見えます。探している効果を実現するには、ユーザーのタッチと円の中心との間の線の角度を確認するだけです。次に、線の長さを確認して、自分がどの円にいるのかを確認します。試してください:

// Find the pie segment you are in. Angle in radians.
float angle = atan2(centre.y - touch.y, centre.x - touch.x))

// Use the angle to figure out which segment the user tapped in. You'll have to
// figure out the angles for the 12 segments on your own!
if(angle > 2.7489 || angle < -2.7489){

}

// Compute the length of the line.
float dx = centre.x - touch.x;
float dy = centre.y - touch.y;
float length = sqrt(dx * dx + dy * dy);

// Check if the user touched the inner circle.
if(length <= radius1){

}
// Check if the user touched the outer circle.
else if(length <= radius2){

}
// The user tapped outside both circles.
else{

}

そこから、いずれかの円のレイアウトを変更するために必要なコードを追加するだけです。それが役立つことを願っています!

于 2013-09-29T08:42:48.633 に答える