0

こんにちは、モーションの後にアニメーションが再生されてから空白になるアプリを作成しています。アニメーションが終了してサウンドが再生されるときにコードで述べる方法が必要です。サウンドコードがあるので、方法を知る必要があります。[animation startanimating][animation stopanimating]、 、[audioplayer play]などのコードを使用しています[audioplayer stop]。初心者なのでお手柔らかによろしくお願いします(;_;)

4

3 に答える 3

1

完了コールバックでブロックを使用するようにコードを変換できます。この回答の例。


例で編集:

アニメーション化したいビューが呼び出されたとしましょうmyView

[UIView animateWithDuration:0.5 
                  delay:0.0 
                options:UIViewAnimationOptionBeginFromCurrentState 
             animations:^{
                 myView.alpha = 0; // a fade out animation
             }
             completion:^(BOOL finished)
             {
                 [audioPlayer play];
                 // whatever else
             }

 ];

これはあなたが試したものですか?もっと実際のコードを投稿できますか? アニメーションとコールバック全体をどのように処理しているかを確認するのに役立ちます。

于 2012-07-20T15:57:40.843 に答える
0
[UIView animateWithDuration:0.5 
                      delay:0.0 
                    options:UIViewAnimationOptionBeginFromCurrentState 
                 animations:^{
                     //animation block
                     // perform animation here
                 }
                 completion:^(BOOL finished){
                     // play sound here
                     [audioPlayer play]

     }];
于 2012-07-20T16:06:32.847 に答える
0

を使いたくなるでしょうCAKeyFrameAnimation。これにより、個々のフレーム時間で一連の画像をアニメーション化し、アニメーションの最後に達したときにデリゲート通知を受け取るUIImageViewことができます。

開始するためのサンプル コード (ARC を想定):

// create an animation overlay view to display and animate our image frames
UIView *animationView = [[UIView alloc] initWithFrame:frame];
[self.view addSubview:animationView];

// using 4 images for the example
NSArray *values = [NSArray arrayWithObjects:(id)[[UIImage imageNamed:@"Image1.png"] CGImage],
                       (id)[[UIImage imageNamed:@"Image2.png"] CGImage],
                       (id)[[UIImage imageNamed:@"Image3.png"] CGImage],
                       (id)[[UIImage imageNamed:@"Image4.png"] CGImage],
                       nil];

// change the times as you need
NSArray *keyTimes = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0],
                         [NSNumber numberWithFloat:0.25],
                         [NSNumber numberWithFloat:0.50],
                         [NSNumber numberWithFloat:1.0],nil];

// animating the contents property of the layer
CAKeyframeAnimation *keyframe = [CAKeyframeAnimation animationWithKeyPath:@"contents"];
keyframe.values = values;
keyframe.keyTimes = keyTimes;
keyframe.calculationMode = kCAAnimationLinear;
keyframe.duration = 1.0;  // 1 second, can be whatever you want, obviously
keyframe.delegate = self;
keyframe.removedOnCompletion = NO;
keyframe.fillMode = kCAFillModeForwards;

// "user defined string" can be whatever you want and probably should be constant somewhere in 
// your source. You can use this same key if you want to remove the animation
// later using -[CALayer removeAnimationForKey:] on the animationView's layer
[animationView.layer addAnimation:keyframe forKey:@"user defined string"];

次に、別の場所でデリゲート メソッドを実装します。

- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)finished
{
    if ( finished ) {
        // play music
    }
}
于 2012-07-20T17:00:50.710 に答える