2011-04-07 196 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。