2012-01-28 1 views
2

Скажем, у меня есть 3 CALayers (квадраты разных цветов, например). И я хочу, чтобы выполнить следующую анимацию:Как я могу группировать и группировать основные анимации для разных объектов?

layer1 одновременно транслирует и чешуйки из положения А в положение В.

После layer1 находится в новом положении и имеет новый размер, layer2 и 3 одновременно переводить с позиций C и D в позиции E и F соответственно. Эти слои (2 и 3) также исчезают, когда они переводятся в E и F. Но layer2 также масштабируется по мере его перевода, а layer3 просто преобразует (но с CAKeyframeAnimation, так что, когда он достигает точки F, он оказывает немного бодрящий эффект вверх).

  1. Для слоя 1, я могу:

    • создать CABasicAnimation с единственной установкой времени, установленного в, скажем, 1, и добавить его в layer1 для ключ «преобразования» создание транслят
    • масштаб преобразования и применить его к слою
  2. для layer2 то же самое, как для layer1, но и установив непрозрачность.

  3. Для layer3 я бы создал анимацию ключевого кадра. А также установите непрозрачность.

Из сказанного выше:

Похоже вызова LAYER2 SetTransform: затем setOpacity: результаты одновременных анимаций. Но разве это правильный способ убедиться, что они одновременно, или я должен использовать что-то вроде CAAnimationGroup?

Имеет смысл переводить и масштабировать конкатенирование матриц? Имеет ли смысл использовать матрицы вместо установки позиций?

Как связать их так, чтобы анимации для слоев layer2 и layer3 не запускались до тех пор, пока не будет выполнен слой1, а затем преобразование и непрозрачность слоя2 происходят одновременно с анимацией ключевого кадра и непрозрачности layer3?

ответ

2

Я сделал что-то очень похожее сегодня .. Я смешивал CGAffineTransform и CABasicAnimations, и это вызвало самую неловкую ошибку. В любом случае.

установить анимацию для выполнения способа после завершения я ужасна, что я использовал:

[self performSelector:@selector(animationDone) withObject:nil afterDelay:0.0]; 

после того, как я закончил делать 3 CABasicAnimations в одном методе я использовал, CAAnimationGroup называть все 3 сразу. После завершения 1-й группы анимации он вызовет метод animationDone для запуска следующего метода последующих анимаций.

также должны были быть осторожны:

animationObject.fillMode = kCAFillModeForwards; //b/c of object's coordinate changes 
animationObject.removedOnCompletion = NO; 
Смежные вопросы