0

次のような丸いサイコロが1つあるアプリケーションを開発しています。画像の中央をクリックすると、サイコロが回転します。

最初の画像は回転前を意味し、2番目の画像は回転後の画像を意味します。この番号では3が結果ポインタに表示されます。私の問題は、サイコロの目が3番の場合、結果をどのように検出するかです。結果の矢印に表示される番号が必要です。

ボタンをクリックすると私はします:-

角度のように機能する乱数を作成します。画像をその角度に回転させます。

-(IBAction)diceButtonClicked:(id)sender
{
    float angle=arc4random()%360;
    NSLog(@"%f",angle);
    toAngle=angle;
    if (fromAngle+toAngle<360) {
        toAngle=fromAngle+toAngle;
    }
    else
    {
        if (toAngle<30) {

            toAngle=angle+30;
        }
        else
        {
            toAngle=angle;
        }
    }
     [self rotateDiceMethod];

  }


My logic for image rotation:-

  [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 
   diceNumbers.transform = CGAffineTransformRotate(startTransform,toAngle);
    [UIView commitAnimations];
    startTransform=diceNumbers.transform;
    fromAngle=toAngle; 

サイコロの結果がどれであるか、または必要な機能を実現するためにどのようなアプローチに従うべきかを知る方法を誰かに教えてください。

任意の提案をいただければ幸いです。前もって感謝します!

4

1 に答える 1

2

あなたは回転角の正確な量を知っています。最も簡単な方法は、回転角度を検出して対応する値を取得することです。

例えば:

- (int)getDiceValue  {
   // Total 6 number, so 360/6 = 60 deg for each number and make sure totalRotatedAngle is from 0 to 359
   if (totalRotatedAngle < 30 || totalRotatedAngle >= 300)  {return 1;}
   else if (totalRotatedAngle >= 30 && totalRotatedAngle < 90)  {return 6;}
   ...
}

もう1つ、CGAffineTransformRotateはラジアン値を引数として取ります。したがって、変換する前に、回転角を度からラジアンに変換する必要があります。

于 2012-05-28T07:50:26.847 に答える