2013-05-24 3 views
0

Я пытаюсь анимировать спрайт, используя только CoreAnimation. Он работает до сих пор, но я не могу понять, как перевернуть лист спрайтов.Как перевернуть CGImageRef по оси y

Прямо сейчас, у меня есть анимация для ходьбы, но я хочу, чтобы спрайт увидел направление, в котором он идет (потому что он выглядит как глупый ход назад).

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

Сейчас мой спрайт расширяет CALayer и я установил его содержимое в CGImageRef, который спрайт лист:

self.contents = (id) image; 

Чтобы перевернуть его, я попробовал:

UIImage *tmp = [UIImage imageWithCGImage:image scale:1.0 orientation:UIImageOrientationUpMirrored]; 
CGImageRef flippedImage = tmp.CGImage; 
self.contents = (id) flippedImage; 

.. и это не работает.

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

Есть ли простой способ сделать это?

Если есть способ перевернуть весь CALayer, я хотел бы знать это. =]

Спасибо!

ответ

1

Вместо того чтобы листать изображение, вы можете попробовать применить преобразование к своему объекту слоя. Что-то вроде:

self.transform = CATransform3DMakeScale(-1, 1, 1); 

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

+0

Это замечательно! Есть ли способ отключить флип-анимацию? Потому что сейчас он оживляет щелчок, так что похоже, что вы поворачиваете лист бумаги. –

Смежные вопросы