2014-02-15 7 views
3

У меня довольно простая анимация с 8 одинаковыми размерами. Я не использую встроенные методы анимации, так как я хочу вручную управлять скоростью анимации «на лету». Я использую предварительно загруженные SKTexture и выполняю [object setTexture: texture]; внутри обновления: currentTime.SKSpriteNode растягивается при ручной анимации текстур

Проблема в том, что иногда текстура действительно искажается/растягивается. После большой отладки я сузил ее, только когда узел неподвижен. В самом деле, если я переместить узел пиксель и переместить его обратно, как это, проблема никогда не происходит:

[self setTexture:texture]; 
CGPoint currentPosition = self.position; 
self.position = CGPointMake(currentPosition.x + 1, currentPosition.y + 1); 
self.position = currentPosition; 

Это чувствует чрезвычайно Hacky ко мне. Я думаю, что под капотом он запускает перерисовку на родительском узле. Кто-нибудь еще испытал это? У меня есть два основных вопроса. 1) В чем причина? и 2) Как я могу разрешить это, не прибегая к взлому?

Вот нормальный кадр и растянутая версия (прошу прощения за качество, заполнитель искусства ...)

not-stretched streched

Edit: После нескольких замечаний, я понял, что я забыл что я уменьшил размер узла меньше размера текстуры. Несмотря на то, что текстуры имеют одинаковый размер, применение новой текстуры к узлу с меньшим размером вызывает ошибку.

+0

У других проблем была такая же проблема - это может быть ошибка в SK. Возможно, это исправлено в бета-версии ios 7.1. – LearnCocos2D

+0

Попробуйте добавить [self setSize: texture.size]; –

+0

@ DobroćudniTapir, который работал на меня. Я предпочитаю это. Я масштабировал спрайт вниз, поэтому теперь я просто масштабирую его каждый раз, когда я применяю текстуру. Вы хотите добавить это как ответ, чтобы я мог его принять? – nothappybob

ответ

6

кажется, что при настройке текстуры с помощью setTexture: спрайт узел не изменяет его размер, пока не перемещаются, изменять размер, и т.д. ...

Вы можете решить эту проблему, установив size вручную после установки текстуры ,

[spriteNode setTexture:texture]; 
[spriteNode setSize:texture.size]; 

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

  • Нет связанных вопросов^_^