анимация кнопки с задержками - iPhone - PullRequest
1 голос
/ 13 октября 2010

Я пытаюсь заставить кнопку перейти к координатам, сделать паузу, перейти к другим координатам, сделать паузу, а затем снова двигаться.процесс должен повторяться бесконечно.то, что у меня есть сейчас, просто перемещает последний шаг.

это то, что у меня есть до сих пор ('mover' - это имя UIButton):

- (void) firstAnimation {

        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration:0.5];
        [UIView setAnimationDelay:5];
        [UIView setAnimationRepeatCount:-1];
        [UIView setAnimationRepeatAutoreverses:NO];

        CGPoint pos = mover.center;
        pos.y = 200.f;
        pos.x = 169.f;
        mover.center = pos;

        [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(firstAnimation:) userInfo:nil repeats:NO];
        pos.y = 100.f;
        pos.x = 179.f;
        mover.center = pos;

        [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(firstAnimation:) userInfo:nil repeats:NO];
        pos.y = 160.f;
        pos.x = 129.f;
        mover.center = pos;

        [UIView commitAnimations];

}

спасибо за любую помощь

Ответы [ 3 ]

3 голосов
/ 13 октября 2010

Вам не нужно использовать таймеры, просто установите для делегата анимации значение self и реализуйте метод animationfinished.

Смотрите мой ответ здесь:

анимации в бесконечном цикле

1 голос
/ 13 октября 2010

Если вы отправляете исключительно для iOS4, я настоятельно рекомендую использовать блоки и следующий метод:

[UIView animateWithDuration:kAnimationDuration
                      delay:kAnimationDelay
                    options:UIViewAnimationCurveEaseInOut
                 animations:^ {
                     // your animations here.
                 }
                 completion:^(BOOL finished) {
                     // what you want to do upon animation completion here.
                 }];

Обратите внимание, что в блоке завершения вы можете также навести на анимацию другую анимацию.Фактически, вы можете сохранить три блока анимации как переменные блока, а затем просто передать их вышеуказанному методу, который будет выполняться один за другим, пока третий не завершится.Тогда просто перезапустите процесс!

Блоки ваши друзья.

0 голосов
/ 13 октября 2010

Вы бы лучше подходили для использования ключевых кадров CoreAnimation и установки repeatCount = HUGE_VALF для создания цикла навсегда

...