【问题标题】:Freeze last frame of animation new code?冻结动画新代码的最后一帧?
【发布时间】:2011-10-01 04:55:07
【问题描述】:

我正在尝试冻结动画的最后一帧。以下代码曾经可以工作,但是在更新到 iOS 后它不再工作。如何编写此代码以使最后一张图像留在屏幕上?

animation.animationImages = [NSArray arrayWithObjects:

                             [UIImage imageNamed:@"watermelondrop2.png"],

                             [UIImage imageNamed:@"watermelondrop4.png"],

                             [UIImage imageNamed:@"watermelondrop6.png"],

                             [UIImage imageNamed:@"watermelondrop8.png"],

                             [UIImage imageNamed:@"watermelondrop10.png"],

                             [UIImage imageNamed:@"watermelondrop12.png"],

                             [UIImage imageNamed:@"watermelondrop14.png"],

                             [UIImage imageNamed:@"watermelondrop15.png"], nil];

    animation.animationDuration = .8;
    animation.animationRepeatCount = 1;
    [animation startAnimating];
    [self playwatermelondropsound];
    [self.view addSubview:animation];
    animation.image = [UIImage imageNamed:@"watermelondrop16.png"];

【问题讨论】:

  • 如果它的行为不符合您的要求,那么这段代码的行为如何?

标签: iphone xcode animation sdk freeze


【解决方案1】:

我花了 40 分钟来解决您的问题,而且非常简单:

有两种方法可以实现你想要的:

  1. 将您想要在屏幕上显示的图像设置为default 图像。
  2. 或者只是这样做,

    //make your last line to first line.  
    animation.image = [UIImage imageNamed:@"watermelondrop16.png"];
    animation.animationImages = [NSArray arrayWithObjects:
                         [UIImage imageNamed:@"watermelondrop2.png"],
                         [UIImage imageNamed:@"watermelondrop4.png"],
                         [UIImage imageNamed:@"watermelondrop6.png"],
                         [UIImage imageNamed:@"watermelondrop8.png"],
                         [UIImage imageNamed:@"watermelondrop10.png"],
                         [UIImage imageNamed:@"watermelondrop12.png"],
                         [UIImage imageNamed:@"watermelondrop14.png"],
                         [UIImage imageNamed:@"watermelondrop15.png"], nil];
    
    animation.animationDuration = .8;
    animation.animationRepeatCount = 1;
    [animation startAnimating];
    [self playwatermelondropsound];
    [self.view addSubview:animation];
    

猜猜它会开始工作,因为我已经测试过了。 :)

【讨论】:

  • 我刚刚尝试了类似的方法,它可以工作。我把animation.image = [UIImage imageNamed:@"watermelondrop16.png"];放在[animation startAnimating];之前
  • @rptwsthi 我想在动画期间为所有图像文件添加淡入淡出动画。我该怎么做?...你能帮帮我
【解决方案2】:
[self cleanStance];
NSArray *imageArray = [[NSArray alloc] initWithObjects:
                       [UIImage imageNamed:@"jump1.png"],
                       [UIImage imageNamed:@"jump2.png"],
                       nil];    
self.player.animationImages = imageArray;
self.player.animationDuration = 0.3;
//self.player.contentMode = UIViewContentModeBottomLeft;
[self.view addSubview:self.player];
[self.player startAnimating];


- (void)cleanStance {
[self.player setImage:nil];
self.player.animationImages = nil;

}

这是显示图像跳跃的示例,这可能对你有帮助

【讨论】:

    【解决方案3】:

    你的代码对我来说看起来不错,除非我这样做时,我通常设置UIImageView.image 属性之前我告诉UIImageView 开始动画。此外,将[UIImage imageNamed:@"watermelondrop16.png"] 添加到.animationImages 数组的末尾。也许这会解决你的问题。希望有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-03
      • 2014-12-16
      • 2011-03-27
      • 2013-10-30
      • 1970-01-01
      • 2017-05-02
      • 2021-08-10
      • 1970-01-01
      相关资源
      最近更新 更多