0

我正在开发一个应用程序,其中有一个圆形骰子,例如:当我单击图像的中心时,它会旋转

在第一个图像中是在旋转之前表示初始状态,第二个图像是在旋转图像之后,并且在这个数字 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;}
   ...
}

还有一件事,CGAffineTransformRotate 将弧度值作为参数。因此,您必须在转换之前将旋转角度从度数转换为弧度。

于 2012-05-28T07:50:26.847 回答