我的代码中有一个错误,我无法修复..
这是我的代码..它在current_region++
发生的第一个if语句中...请帮帮我,谢谢
-(void)planetRotation:(UIView *)planet average:(float )time1 perihelion:(float )time2 aphelion:(float )time3 region:(int ) current_region
{
current_region = 0;
[planet.layer removeAllAnimations];
if (current_region == 0 || current_region == 2)
{
[UIView animateWithDuration:time1 delay:0.0 options: UIViewAnimationOptionTransitionNone
animations: ^{ CABasicAnimation* rotationAnimation;
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI * 2.0 /* full rotation*/ * time1 * 1 ];//multiply more to add speed
rotationAnimation.duration = time1/4;
rotationAnimation.cumulative = YES;
rotationAnimation.repeatCount = HUGE_VALF;
[planet.layer addAnimation:rotationAnimation forKey:@"orbit"];} completion:^(BOOL finished){current_region++; }];
}
else if(current_region == 1)
{
[UIView animateWithDuration:time2 delay:0.0 options: UIViewAnimationOptionTransitionNone
animations:^{ CABasicAnimation* rotationAnimation;
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI * 2.0 /* full rotation*/ * time2 * 1 ];//multiply more to add speed
rotationAnimation.duration = 15;
rotationAnimation.cumulative = YES;
rotationAnimation.repeatCount = HUGE_VALF;
[planet.layer addAnimation:rotationAnimation forKey:@"orbit"];} completion:^(BOOL finished){ }];
}
else if(current_region == 3)
{
[UIView animateWithDuration:time3 delay:0.0 options: UIViewAnimationOptionTransitionNone
animations:^{ CABasicAnimation* rotationAnimation;
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI * 2.0 /* full rotation*/ * time3 * 1 ];//multiply more to add speed
rotationAnimation.duration = 15;
rotationAnimation.cumulative = YES;
rotationAnimation.repeatCount = HUGE_VALF;
[planet.layer addAnimation:rotationAnimation forKey:@"orbit"];} completion:^(BOOL finished){ }];
}
答案 0 :(得分:1)
当您声明current_region
变量时,您需要修改声明,如下所示:
__block int current_region = 0;
__块变量存在于变量的词法范围与声明的所有块和块副本之间共享的存储中 在变量的词法范围内创建。因此,存储将 如果块的任何副本,则在堆栈帧的破坏中存活 在框架内声明超出框架的末尾(for 例如,通过在某处加入队伍以便以后执行)。多 给定词法范围内的块可以同时使用共享 变量