旋转瓶子应用程序

时间:2015-06-20 18:11:00

标签: swift rotation

我有一个旋转瓶子的应用程序。 当有人点击按钮时,瓶子会旋转。

就像现在的代码一样,瓶子将旋转10次,然后以0到360之间的随机度停止。但我希望瓶子能够顺畅地旋转并且平稳地停止,而不仅仅是停止常数。我希望瓶子旋转得越来越慢。

代码:

func rotateRandom(){
    let diceRoll = CGFloat(arc4random_uniform(360))
    let degree =  0.0174532925 as CGFloat
    let rotate = diceRoll
    UIView.animateWithDuration(0.5, delay: 0.0, options: UIViewAnimationOptions.CurveLinear,      animations: { () -> Void in
        self.bottleImageView.transform = CGAffineTransformRotate(self.bottleImageView.transform, rotate)
        }, completion: nil)
    //println(diceRoll)
}

func rotateLeft(){
    UIView.animateWithDuration(3, delay: 0.0, options: UIViewAnimationOptions.CurveLinear,      animations: { () -> Void in
        self.bottleImageView.transform = CGAffineTransformRotate(self.bottleImageView.transform, -180 * 0.0174532925)
        self.bottleImageView.transform = CGAffineTransformRotate(self.bottleImageView.transform, -180 * 0.0174532925)
        self.bottleImageView.transform = CGAffineTransformRotate(self.bottleImageView.transform, -180 * 0.0174532925)
        self.bottleImageView.transform = CGAffineTransformRotate(self.bottleImageView.transform, -180 * 0.0174532925)
        self.bottleImageView.transform = CGAffineTransformRotate(self.bottleImageView.transform, -180 * 0.0174532925)
        self.bottleImageView.transform = CGAffineTransformRotate(self.bottleImageView.transform, -180 * 0.0174532925)
        self.bottleImageView.transform = CGAffineTransformRotate(self.bottleImageView.transform, -180 * 0.0174532925)
        self.bottleImageView.transform = CGAffineTransformRotate(self.bottleImageView.transform, -180 * 0.0174532925)
        self.bottleImageView.transform = CGAffineTransformRotate(self.bottleImageView.transform, -180 * 0.0174532925)
        self.bottleImageView.transform = CGAffineTransformRotate(self.bottleImageView.transform, -180 * 0.0174532925)
        //self.imageView.transform = CGAffineTransformMakeRotation(360)
        }, completion: nil)
    rotateRandom()
}

这里有什么建议吗?我还想要一个瓶子停止时的功能。所以我可以在瓶子停止时添加一个弹出窗口。

2 个答案:

答案 0 :(得分:1)

我会将变换值设为属性,然后让计时器增加变换值并将变换应用于单个图像。当需要减速时,使增量越来越小,直到停止它为止。

使用arc4ran_uniform()作为随机停止时间。

答案 1 :(得分:0)

这可能会有所帮助:http://markmanx.com/?p=33

正如JoshStrange上面提到的,你会想要考虑放松。使用缓动功能,您可以设置旋转动画,使其随时间平滑减速。在Greensock,它就像写

之类的东西一样简单

Tween.to(elementToAnimate,2seconds,{rotate:360,easing:Cubic.easeOut})

我不是Swift开发人员,但是这个人创建了一个缓动函数库,可以为您提供相同的功能:

https://github.com/craiggrummitt/SpriteKitEasingSwift