如何在游戏加载后延迟图像动画

时间:2014-02-28 00:37:14

标签: ios animation

我需要找到一个延迟此对象动画的选项(cloudDrop2图像)。所有当我加载游戏时,cloudDrop2图像显示下降。我想在加载游戏后延迟动画5秒钟。 5秒后,图像显示下降。我正在使用Xcode 5。

任何帮助或建议?

以下是我使用的代码:

<。p> .m文件

-(void)cloudDrop2Code{

// cloudDrop2 Images Animation
cloudDrop2.animationImages = [NSArray arrayWithObjects:
                              [UIImage imageNamed:@"cloudDrop2.png"],
                              [UIImage imageNamed:@"cloudDrop1.png"],
                              [UIImage imageNamed:@"cloudDrop2.png"],
                              [UIImage imageNamed:@"cloudDrop1.png"],
                              [UIImage imageNamed:@"cloudDrop2.png"],
                              [UIImage imageNamed:@"cloudDrop1.png"],
                              [UIImage imageNamed:@"cloudDrop2.png"],
                              [UIImage imageNamed:@"cloudDrop1.png"],nil];

[cloudDrop2 setAnimationRepeatCount:1];
cloudDrop2.animationDuration = 0.1;
[cloudDrop2 startAnimating];

// Drop Cloud Ramdom Position

cloudDrop2.center = CGPointMake(cloudDrop2.center.x, cloudDrop2.center.y +2.1);
if (cloudDrop2.center.y > 590){

    RamdomPosition = arc4random() %266;
    RamdomPosition = RamdomPosition +54;

    cloudDrop2.center = CGPointMake(RamdomPosition, -40);
    dropCloudUsed = NO;


    // Time to Drop Cloud Down Again
    [[NSRunLoop currentRunLoop]runUntilDate:[NSDate dateWithTimeIntervalSinceNow:7.0]];

}

}

然后在viewDidLoad方法中:

// cloudDrop2 Down Movement Speed
TMcloudDrop2 = [NSTimer scheduledTimerWithTimeInterval:0.03 
                        target:self 
                        selector:@selector(cloudDrop2Code)
                        userInfo:nil 
                        repeats:YES];

2 个答案:

答案 0 :(得分:0)

欢迎来到SO。

我没有看到任何负责加载游戏部分的代码。你可能应该发布这个帖子,以便更容易回答你的问题。

没有看到您的代码的任何其他部分,我建议您使用NSNotification在游戏加载完成后提醒您。收到通知后,您就可以开始动画序列了。

您可以阅读NSNotification Class Reference。如果你需要一些帮助或指示,不要害怕问。

要使用计时器延迟5秒钟来启动动画,您可以使用:

[NSTimer scheduledTimerWithTimeInterval:5.0
  target:self
selector:@selector(targetMethod:)
userInfo:nil
 repeats:NO];

其中(targetMethod :)是包含动画的方法的名称。

答案 1 :(得分:0)

使用单独的方法创建计时器。

- (void)startGameAnimation
{
  // cloudDrop2 Down Movement Speed
TMcloudDrop2 = [NSTimer scheduledTimerWithTimeInterval:0.03 
                        target:self 
                        selector:@selector(cloudDrop2Code)
                        userInfo:nil 
                        repeats:YES];
}

然后在viewDidLoad中延迟调用此方法。

- (void)viewDidLoad
{
  [super viewDidLoad];
  [self performSelector:@selector(startGameAnimation) withObject:nil afterDelay:5];
}