2011-04-07 198 views
1

我在寫遊戲。在攻擊者殺死一名士兵之後,一個下降的UIImageView說經驗+1會顯示出來。UIImageView的動畫僅運行一次

現在,當我殺死第一名士兵時,動畫顯示正確,但是在第二名士兵以及後來殺死時沒有顯示

動畫代碼,方法名稱是showGainXPAnimationAfterKillSoldier。

imgGainXPAfterKillSoldier.hidden = FALSE; 
    [imgGainXPAfterKillSoldier.layer removeAllAnimations]; 
    imgGainXPAfterKillSoldier.frame = CGRectMake(140, 220, 53, 19); 
    // a loop to show animation. 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationBeginsFromCurrentState:YES]; 
    [UIView setAnimationDuration:1.5]; 
    //imgGainXPAfterKillSoldier.frame = CGRectMake(100, 200, 53, 19); 
    CGAffineTransform transform = CGAffineTransformMakeTranslation(-112, 215); 
    imgGainXPAfterKillSoldier.transform = transform; 
    //imgGainXPAfterKillSoldier.alpha = 0.0f; 
    [UIView commitAnimations]; 

調用動畫代碼,

if (killedSoldierCount>0) { 
    // add imgview to show gained XP. 
    if (imgGainXPAfterKillSoldier) { 
     MWLog(@"remove it!"); 
     [imgGainXPAfterKillSoldier.layer removeAllAnimations]; 
     [imgGainXPAfterKillSoldier removeFromSuperview]; 

    } 
    imgGainXPAfterKillSoldier.frame = CGRectMake(140, 220, 53, 19); 
    imgGainXPAfterKillSoldier.hidden = TRUE; 
    //imgGainXPAfterKillSoldier.alpha = 1.0f; 
    [self.view addSubview:imgGainXPAfterKillSoldier]; 

    switch (killedSoldierCount) { 
     case 1: 
      // show add experience animation after kill soldier. 
      MWLog(@"kill a soldier, show XP+1 animation."); 
      [self showGainXPAnimationAfterKillSoldier:1]; 
      break; 

是什麼問題?提前致謝!

回答

1

現在問題得到解決。每次我想動畫,我創建一個新的UIImageView來做到這一點。而無需重複使用在xib文件中定義的UIImageView。