0

クラスのどのメソッドでも問題なく機能する単純な爆発アニメーションがあります。ただし、タイマーが切れたら、timerupdateメソッドから呼び出したいと思います。問題は、何らかの理由でここからは機能しないことです(確かにタイマーと関係があります)。それは単に私の画像を再表示します..アニメーションはありません。それを機能させる方法がわかりません。

- (void)explosionAnimation
{
    imgExplosion.hidden=FALSE;

    //set starting point of explosion
    CGRect explosionFrame = self.imgExplosion.frame;
    explosionFrame.origin.x = explosionFrame.origin.y = -960.0f;
    explosionFrame.size.width = explosionFrame.size.height = 1920.0f;

    [UIView animateWithDuration:1.5f animations:^{
        self.imgExplosion.frame = explosionFrame;
    } completion:^(BOOL finished) {
        self.imgExplosion.hidden = YES;
    }];
}

-(void) createTimer
{
    // Create timer instance
    if (timer != nil){

        [timer invalidate];
        hasTimerStarted = NO;
    }

    // Initialize the timer.
    timer = [NSTimer scheduledTimerWithTimeInterval:1.0
                                           target:self
                                           selector:@selector(timerUpdater)
                                           userInfo:nil repeats:YES];
}

- (void)timerUpdater{

    if(!hasTimerStarted){
        intTotalSeconds = [strTotalNumberofSeconds intValue];

        hasTimerStarted = YES;
    }
    else{
        intTotalSeconds--;

        self.lblTimer.text = [self revertTimeToString:intTotalSeconds];
    }

    // if totalSeconds hits zero, then time is up! You lose!
    if (intTotalSeconds == 0){
        [timer invalidate];

        [self explosionAnimation];

        hasTimerStarted = NO;

        [self addPlayAgainButton];
    }
}
4

1 に答える 1

2

メインスレッドに遅延を入れるか、爆発メソッドを呼び出してみてください

[self performSelector:@Selector(explosionAnimation) withObject:nil afterDelay:1.0];
于 2013-03-22T03:48:58.240 に答える