2012-06-16 3 views
2

Я использую частицы, слегка модифицированные CCParticleFlower с позициейVar, чтобы быть в форме вертикальной линии сверху вниз. В обновлении CCNode я постоянно меняю положение частиц слева направо по всему экрану, когда он достигает правой стороны, я устанавливаю x в 0 и начинаю прокручивать вправо.Частицы в cocos2d-x мерцание при установкеPosition изменяется

Проблема заключается в том, что когда я возвращаю значение X в 0, все частицы мигают, они исчезают примерно на один кадр и появляются в следующем кадре, что вызывает неприятный мерцающий эффект.

Этого не происходит, когда я увеличиваю значения X на небольшие числа, но когда положение частиц возвращается в исходное положение, оно мерцает, на win32, android и ios. Я использую самую последнюю версию 1.1 (главная ветвь)

ответ

1

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

http://www.cocos2d-iphone.org/forum/topic/17167

Соответствующее сообщение:

Я просто столкнулся с той же проблемой и мне потребовалось некоторое время, чтобы добраться до дна,> вот нижняя часть: не используйте

[самопланирование: @selector (NextFrame :)];

Вместо этого следует использовать

[самостоятельного scheduleUpdate];

и переименовать NextFrame: обновить:

с помощью расписания пользовательских Selector обновление вашего в самом конце очереди CCScheduler, другими словами, это приведет к тому, NextFrame: метод, вызываемый после обновления системы частиц : метод, потому что система частиц планирует собственный метод обновления с приоритетом 1. Это не хорошо, потому что положение квадрантов для частиц обновляется с использованием текущего положения излучателя, а затем эмиттер перемещается в ваш NextFrame: метод, который заставляет все частицы перемещаться снова, потому что положение излучателя действительно является позицией CCNode, которая рисует частицы. С помощью schedUpdate вы действительно планируете свое обновление: метод с приоритетом 0, что означает, что он будет вызываться до обновления системы частиц: метод, и все будет хорошо.

В основном, добавьте метод обновления к своему классу и вызовите schedUpdate вместо того, чтобы вручную его планировать.

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

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