2011-07-22 18 views
0

アニメーションの設定に問題があります。最初の画像ビューではアニメーションが開始され、playsound1が呼び出されると2番目のアニメーションが開始されます。すべてうまく動作しますが、2番目のアニメーションが停止した時点でアニメーションが実行されていません。だから私がやりたいことは、2番目のアニメーションが停止した後です。最初からやり直してから2番目のアニメーションを再生するためにメソッドが呼び出されたときです。何かヒント?アクション後のUIImageViewアニメーション?

ここでそれが今であるとして、あなたは、コードの一部を見ることができます:

- (void)loadtest1 { 
    NSArray *imageArray = [[NSArray alloc] initWithObjects: 
          [UIImage imageNamed:@"test1.png"], 
          [UIImage imageNamed:@"test2.png"], 
          [UIImage imageNamed:@"test3.png"], 
          [UIImage imageNamed:@"test4.png"], 
          nil]; 

    test1.animationImages = imageArray; 
    test1.animationRepeatCount = 0; 
    test1.animationDuration = 1; 

    [imageArray release]; 
    [test1 startAnimating]; 
} 

- (void)loadtest2 { 
    NSArray *imageArray = [[NSArray alloc] initWithObjects: 
          [UIImage imageNamed:@"test4.png"], 
          [UIImage imageNamed:@"test5.png"], 
          [UIImage imageNamed:@"test6.png"], 
          [UIImage imageNamed:@"test7.png"], 
          nil]; 

    test2.animationImages = imageArray; 
    test2.animationRepeatCount = -1; 
    test2.animationDuration = 1; 

    [imageArray release]; 
    [test2 startAnimating]; 
} 

- (IBAction)playsound1 { 
    NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp3"]; 
    AVAudioPlayer* theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL]; 
    theAudio.delegate = self; 
    [theAudio play]; 
    test1.hidden = 0; 
    test2.hidden = 1; 
    [test1 startAnimating]; 
    test2.center = test1.center; 
} 

答えて

2

私が正しくあなたを理解していれば第二1が終了したときに、何をやろうとしていることは、あなたの最初のアニメーションを再起動されます

これを処理する正しい方法は、CABasicAnimationです。この方法では、アニメーションが完了したときに– animationDidStop:finished:メソッドが呼び出されるデリゲートを指定できます。

あなたはこのようにしたくない場合は、回避策のソートは以下の通りです:loadtest2に、あなたがアニメーションを開始した後、遅延して実行する方法をスケジュール:

[self performSelector:@selector(loadTest1) withObject:nil afterDelay:1.0]; 

これが(もっとまたは意志あなたのアニメーションがどれくらい持続するかを知っているので満足できます)。したがって、アニメーションを終了するときは、loadTest1が実行され、最初のアニメーションが再び開始されます。

+0

私はこのように試してみました:[self performSelector:@selector(loadTest1)withObject:nil afterDelay:1.0]; と動作していません。私は、他の方法を試してみて、何が得られるのか見てみるべきです。どうもありがとう。 – ftwhere

+0

NSLogステートメントを 'loadTest1'に入れて、2番目のアニメーションが終了したときに呼び出されることを確認しますか? – sergio

+0

これで動作します。私はサウンドなしでのみ画像ビューのための別の方法を作ったし、ちょうど良い、チップのおかげで多くの動作します。 – ftwhere