Заморозить последний кадр анимации новым кодом? - PullRequest
3 голосов
/ 01 октября 2011

Я пытаюсь заморозить последний кадр анимации. Следующий код раньше работал, однако после обновления до 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"];

Ответы [ 3 ]

7 голосов
/ 01 октября 2011

Я потратил 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];
    

И угадайте, что это начнет работать, как я это проверил. :)

2 голосов
/ 01 октября 2011
[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;

}

Это пример, показывающий, как изображение прыгает в толщину. Это может помочь.

0 голосов
/ 01 октября 2011

Ваш код выглядит нормально для меня, за исключением случаев, когда я это делаю, я обычно устанавливаю .image свойство UIImageView ДО Я говорю UIImageView, чтобы начать анимацию.Также добавьте [UIImage imageNamed:@"watermelondrop16.png"] в конец массива .animationImages.Может быть, это решит вашу проблему.Надеюсь, что поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...