停止后重新启动旋转动画

时间:2015-11-30 21:04:53

标签: ios objective-c animation uiimageview

经过大量的改动/尝试等等,我已经到了一个我真正陷入困境的阶段......

我有一个旋转的UIImageview无限旋转,直到按下屏幕......此时,如果旋转值与某个值匹配(降落在游戏中的目标上),目标会移动并且游戏继续......如果你在按下屏幕后过度射击目标,游戏就结束了。简单的游戏。

我的麻烦是,在您获得GameOver并且动画停止后,我在屏幕上显示UIButton,这会使用ViewController将您带回相同的module。 (我已经为很多应用程序做了这个,它工作正常)。

除此之外,这次,你说得分为4(达到4个目标),然后错过了第5个及其GameOver,当你按下按钮重新启动初始ViewController(基本上重新加载ViewDidLoad)时,动画将无法启动..即使分数和其他事情正确重置......

这是我实现动画的方式:

- (void) spinWithOptions: (UIViewAnimationOptions) options {
    [UIView animateWithDuration: 0.0f
                          delay: 0.0f
                        options: options
                     animations: ^{
                         Hand.transform = CGAffineTransformRotate(Hand.transform, M_PI / 30);
                     }
                     completion: ^(BOOL finished) {
                         if (finished) {
                             if (animating) { //if, keep spinning
                                 [self spinWithOptions: UIViewAnimationOptionCurveLinear];
                             } else if (options != UIViewAnimationOptionCurveEaseOut) { //final spin
                                 //[self spinWithOptions: UIViewAnimationOptionCurveEaseOut dir:direction];
                             }
                         }
                     }];
}

- (void) startSpin {
    [Hand.layer removeAllAnimations];
    if (!animating) {
        animating = YES;
        [self spinWithOptions: UIViewAnimationOptionCurveEaseIn];
    }
}

- (void) stopSpin {
    animating = NO;
    inGame = NO;
}

我在不同的地方试过removeAllAnimations,想也许就是那样......但我不明白为什么,如果ViewDidLoad被召回/ ViewController重置并且你回到了开头,为什么动画没有重启?

我选择这种旋转方法的原因是因为我可以跟踪旋转值并存储它,所以我可以重新启动动画,或者我认为...

0 个答案:

没有答案