iOS应用程序启动时如何播放开场动画

时间:2012-08-09 21:14:39

标签: iphone image animation launch

我正在尝试让代码正确,以便在我在xcode中创建的iphone应用上播放动画。我希望它只在应用程序启动时播放(如愤怒的小鸟),而不是每次我回到主页面。我尝试了几件事,似乎没有什么工作正常。谁能告诉我如何正确地做到这一点?

我正在使用一系列图像来制作动画。

我试图将来自geeky lemon教程(http://www.youtube.com/watch?v=5AbdZ-8JBZQ)的动画代码放在viewDidLoad中。这确实可以工作并播放动画,但每次我回到动画播放的主页面。我不希望在返回主页面时播放动画,就在应用程序启动时。

我还尝试添加另一个视图,这是应用程序启动时的第一个视图,并在viewDidLoad中播放动画,然后在动画完成后使用执行选择器转到主页面(完成后延迟部分) )。这也有效并且播放动画并且在我回到主屏幕时不播放但这导致一些错误使应用程序崩溃。我已经将NSLogs放在了viewDidLoad部分,所以我可以看到这些页面正常工作,有时当我在应用程序中播放它时,我正在调用我的开始动画viewDidLoad。所以我认为这与崩溃有关。当我取出这个视图并直接进入主视图时它不会崩溃。

我也试过把它放在app委托中,我根本无法工作。

请帮助这让我发疯,我无法弄清楚出了什么问题。我知道它可以适用于愤怒的小鸟,而其他人则非常成功。

如果有更好的方法?

5 个答案:

答案 0 :(得分:6)

试试这个:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [self.window makeKeyAndVisible];

    UIImageView *imageView =[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
    imageView.animationImages = [NSArray arrayWithObjects:
                                 [UIImage imageNamed:@"myImage1.png"], [UIImage imageNamed:@"myImage2.png"], [UIImage imageNamed:@"myImage3.png"], [UIImage imageNamed:@"myImage4.png"], [UIImage imageNamed:@"myImage5.png"], [UIImage imageNamed:@"myImage6.png"], nil];


    imageView.animationDuration = 0.5;
    imageView.animationRepeatCount = 3;
    [imageView startAnimating];
    [self.window addSubview:imageView];

    return YES;
}

将动画添加为self.window

的子视图

答案 1 :(得分:0)

您需要将其包含在应用程序委托的 - (void)applicationWillEnterForeground:(UIApplication *)应用程序方法中,只有在您的应用程序“启动”时才会调用此方法。

答案 2 :(得分:0)

或者您也可以将其放入

  

- (BOOL)应用程序:(UIApplication *)应用程序didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

我有一个视图控制器,我加载视图。从那里打电话。

如果你的动画是在一个视图中,你可以让这个动画在一个单独的线程上运行,并在主线程上休眠。

  

(void)applicationDidFinishLaunching :( UIApplication *)application {
     //添加子视图

     

[window addSubview:animationController.view];
     //经过一段时间再做一件事      [self performSelector:@selector(firstcontroller)withObject:nil afterDelay:5];
     [window makeKeyAndVisible];   }

     

- (无效)firstcontroller {
     [window addSubview:firstControllerAfterLaunch.view];
  }

答案 3 :(得分:0)

将动画方法放入

- (BOOL)application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)opts

方法。使用为动画指定的单独视图。将其添加到应用程序的关键窗口,并在动画结束时将其删除。

答案 4 :(得分:0)

尝试使用dispatch_once将动画代码放入viewDidAppear中。这样,您将确保在应用程序的生命周期内仅调用一次动画。