次のアプリケーションをObjectiveCに実装する必要があります>> http://bit.ly/rHzVkF
アプリのようにドラッグして円を回転させるにはどうすればよいですか?同様の例をいくつか知っていますか?
次のアプリケーションをObjectiveCに実装する必要があります>> http://bit.ly/rHzVkF
アプリのようにドラッグして円を回転させるにはどうすればよいですか?同様の例をいくつか知っていますか?
タッチ開始メソッドでは、xとyをチェックして、2つの回転するタブの境界にあるかどうかを確認する必要があります。
タッチを動かすと、xとyの位置の変化(デルタ)を検出し、ATAN2(dx、dy)を使用する必要があります。革命のためにラジアンに変換すると思います。私が間違っている場合は、紙でそれを理解することができます、それは単純な三角法です(インポートすることを忘れないでください<Math.h>
)
この新しい回転変数を使用して、スピンするオブジェクトに適用しますCGAffineTransformRotate();
(これはコアグラフィックスの一部であると思われるので、そのライブラリもインポートしていることを確認してください)。
@ihkawissココアタッチで円を描く方法を知っていますか?– バイキングセグンド
@ihkawiss、あなたは私に答えたくないでしょう。問題なし。あなたのタスクは、より小さなタスクに分割する必要があります。
ネットおよびスタック オーバーフローで、この各ステップについて十分な情報を取得できるはずです。行き詰まった場合 (これはごく普通のことであり、当然のことです)、戻ってきて、これまでの結果を示し、どこで行き詰まったかを説明してください。
同様のシナリオを解決しなければならなかったので、これに 2 セントを投入しようとします。
すべての動きを処理したいビューに touches メソッドを実装する必要があります
x と y の位置の変化を検出する必要があるとアルバートは書いています。メソッドのトリガー時にメソッドに送信される NSSet タッチから場所を取得できます。
メソッドでは、タッチ データを操作するために、このコードのいくつかのバリエーションを実装する必要があります。
for(UITouch *t in touches){
if([t tapCount] > 1){
return;
}
CGPoint loc = [t locationInView:self.view];
ユーザーがタッチした場所 (この場合は CGPoint loc) の x と y を取得したら、math.h ライブラリから atan2 メソッドを実行して、円のラジアンを取得できます。atan2() を使用するには、 #include < math.h > が必要です。
atan2() が機能するには、2 つの y ポイントと 2 つの x ポイントの差という 2 つの引数が必要です。私の場合、現在の (タッチ y ポイント、- 円の中心 y) と現在の (タッチ x ポイント、- 円の中心 x) を使用しました。
double rads = atan2((loc.y - (self.frame.size.height/2)), (loc.x - (self.frame.size.width/2)));
そこから、その情報を使ってさまざまなことを行うことができます。円の周りの新しい x と y の位置を計算するには、余弦関数と正弦関数を利用して適切な座標を計算する必要があります。
newXposition = CenterX + cos(rads) * radiusOfCircle
newYposition = CenterY + sin(rads) * radiusOfCircle
円の中心 X 位置を cos (前に取得したラジアンを入力) に円の半径を掛けた結果に追加することで、新しい xPosition を取得できます。新しい yposition は、同じことを行うだけで取得できます。代わりに sin() を使用します。
したがって、私のコードは次のようになりました....
float radius = 61;
float newXPos = 140 + (cos(rads) * radius);
float newYPos = 165 + (sin(rads) * radius);
頑張ってください、これがあなたが始めるのに役立つことを願っています. このようなものはトリッキーな場合があります