У меня загружен лист спрайта png и соответствующий файл plist, и я пытаюсь анимировать свойство contentsRect CALayer для отображения анимации спрайта из вышеупомянутого аппрайтового листа. Вот код:
CGFloat width = myLayer.frame.size.width;
CGFloat height = myLayer.frame.size.height;
myLayer.bounds = CGRectMake( 0, 0, width, height );
myLayer.contentsGravity = kCAGravityCenter;
myLayer.contents=(id)pImage; // This is my sprite sheet
CAKeyframeAnimation *keyFrameContentsRectAnimation = [CAKeyframeAnimation animationWithKeyPath:@"contentsRect"];
keyFrameContentsRectAnimation.path = pAnimationPath; // This is a path to animate on
keyFrameContentsRectAnimation.values = pRects; // This is an array of normalized CGRects representing sprite sheet
keyFrameContentsRectAnimation.fillMode = kCAFillModeRemoved;
keyFrameContentsRectAnimation.calculationMode = kCAAnimationDiscrete;
keyFrameContentsRectAnimation.duration=pAnimationDuration;
keyFrameContentsRectAnimation.repeatCount = 1;
Приведенный выше код работает, как и ожидалось, до тех пор, пока я отключаю анимацию пути (т. Е. Закомментируем свойство пути из keyFrameContentsRectAnimation) - анимация работает, а contentsRect перемещается по моей таблице спрайтов.
Но вот проблема: все мои спрайты требуют некоторого смещения в пределах слоя слоя, чтобы моя анимация выглядела правильно (смещение изменяется в зависимости от прозрачности).
Итак, я подумал, что если я создам путь из этих точек смещения и добавлю его в свойство пути моей анимации, которое должно решить проблему. К сожалению это не тот случай ...
Как только я добавляю свойство пути, вместо анимации спрайтов я вижу целое изображение листа спрайта на время анимации ... Что я пропустил?