1

xcodeで作成したiPhoneアプリでオープニングアニメーションを再生するためのコードを正しく取得しようとしています。メインページに戻るたびにではなく、アプリが起動したときにのみ再生したい(怒っている鳥のように)。私はいくつかのことを試しましたが、何も正しく機能していないようです。誰かがこれを正しく行う方法を教えてもらえますか?

一連の画像を使用してアニメーションを作成しています。

オタクレモンチュートリアル( http://www.youtube.com/watch?v=5AbdZ-8JBZQ)のアニメーションコードをviewDidLoadに入れようとしました。これは機能してアニメーションを再生しますが、メインページに戻るたびにアニメーションが再生されます。アプリが起動したときだけ、メインページに戻ったときにアニメーションを再生したくありません。

また、アプリの起動時に最初のビューである別のビューを追加し、そこでviewDidLoadでアニメーションを再生し、アニメーションの完了後に実行セレクターを使用してメインページに移動しようとしました(遅延後の部分で実行)。これも機能し、アニメーションを再生し、メイン画面に戻っても再生されませんが、これによりエラーが発生し、アプリがクラッシュします。ビューDidLoadセクションにNSLogを配置したので、ページが機能していることを確認できます。アプリを再生しているときに、開いているアニメーションのviewDidLoadが呼び出されていると表示されることがあります。ですから、これはクラッシュと関係があると思います。このビューを取り出してメインビューに直接移動しても、クラッシュしません。

アプリデリゲートにも入れようとしましたが、まったく機能しません。

これが私を夢中にさせているのを助けてください私は何が悪いのか理解できません。私はそれが怒っている鳥を動かすことができることを知っています、そして他の人はこれを非常にうまくやります。

より良い方法があれば?

4

5 に答える 5

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

于 2013-11-11T17:51:40.783 に答える
0

またはあなたはそれを入れることもできます

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

ビューコントローラがあり、その中でビューをロードします。そこからこれを呼び出します。

アニメーションが単一のビューにある場合は、そのアニメーションを別のスレッドで実行し、メインスレッドでスリープさせることができます。

(void)applicationDidFinishLaunching:(UIApplication *)application{
//サブビューを追加

[ウィンドウaddSubview:animationController.view];
//しばらくしてから別のことを行います
[selfperformSelector:@selector(firstcontroller)withObject:nil afterDelay:5];
[ウィンドウmakeKeyAndVisible]; }

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

于 2012-08-09T21:19:31.190 に答える
0

アニメーションメソッドを

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

方法。アニメーション用に指定された別のビューを使用します。アプリケーションのキーウィンドウに追加し、アニメーションが終了したら削除します。

于 2012-08-09T21:20:19.923 に答える
0

アプリデリゲートの - (void)applicationWillEnterForeground:(UIApplication *)application メソッドに含める必要があります。これは、アプリが「起動」されたときにのみ呼び出されます。

于 2012-08-09T21:17:46.993 に答える
0

アニメーション コードを、dispatch_once を使用して viewDidAppear に配置してみてください。こうすることで、アプリケーションの存続期間中にアニメーションが 1 回だけ呼び出されるようになります。

于 2012-08-10T00:35:15.460 に答える