CCSprite больше не анимируется, так как палец не двигается сверху UIView - PullRequest
0 голосов
/ 19 июня 2011

Вот проблема: я работаю с cocos2D и CCLayers, и я использую UIView, чтобы ловить движения с помощью распознавателя жестов для UIScrollMenu.На моем слое есть анимированные спрайты, которые запускают анимацию вечно;когда я перетаскиваю scrollMenu с пальцем и прекращаю удерживать палец, CCLayer в фоновом режиме больше не обновляется, и спрайты не перемещаются.Как только я снова перемещаю палец, спрайты обновляются.Проблема не должна исходить от спрайтов, потому что, когда я останавливаюсь и двигаюсь снова, спрайт воспроизводит не следующий кадр, а кадр, который должен был отображаться, если бы он продолжал нормально двигаться.Я думаю, что кадры все еще рассчитываются, но слой больше не обновляет свой вид.

У кого-нибудь есть идея, чтобы этого избежать?

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

`CCAction * hitAction = [CCRepeatForever actionWithAction: [CCAnimate actionWithAnimation: hitAnimrestoreOriginalFrame: NO]];

[sprite runAction: hitAction]; `

Функция, которая вызывается при повторном перемещении пальца (и, по-видимому, позволяет обновлять CCLayer), равна - (void)scrollViewDidScroll:(UIScrollView *)scrollView

Ответы [ 2 ]

0 голосов
/ 21 июня 2011

Я закончил тем, что разместил этот вопрос на форуме cocos2D, и вот ответ: http://www.cocos2d -iphone.org / форум / тема / 17845

0 голосов
/ 20 июня 2011

Ну, вы не опубликовали никакого кода ... но, исходя из проблемы, с которой я сталкивался в прошлом, это мое лучшее предположение. Если вы обновляете свою анимацию (или вызовы методов для создания анимации) внутри CCTouchesMoved, тогда прекратите это делать. Просто обновите любую информацию, которая может вам понадобиться внутри CCTouchesMoved, а затем обновите анимацию внутри метода таймера (например, если вы используете [self scheduleUpdate].

...