Как приостановить / возобновить CCParticleSystem в Cocos2D-iPhone? - PullRequest
2 голосов
/ 03 ноября 2011

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

Как я могу это сделать?

Я знаю, что яЯ могу использовать [icleSystem unscheduleUpdate] и [частицыSystem scheduleUpdate], но как я могу проверить, запланировано ли уже обновление?

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

частицыSystem.active, кажется, не дает мне желаемый флаг, чтобы проверить, обновляется система или нет ...

Что мне здесь не хватает?

Ответы [ 2 ]

4 голосов
/ 03 ноября 2011

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

Вместо этого следует использовать pauseTarget и resumeTarget класса CCScheduler для приостановки / возобновления обновленияэкземпляр класса:

[[CCScheduler sharedScheduler] pauseTarget:particleSystem];
[[CCScheduler sharedScheduler] resumeTarget:particleSystem];

Это приостановит / возобновит все запланированные методы, а не только обычный метод обновления.

Вы также можете проверить, приостановлены ли запланированные методы цели:

[[CCScheduler sharedScheduler] isTargetPaused:particleSystem];
1 голос
/ 10 августа 2014

Еще одним приемом, который я использовал, была функция setEmissionRate (). Чтобы приостановить систему частиц:

setEmissionRate (0);

Чтобы возобновить систему частиц:

setEmissionRate (latestValue);

Надеюсь, это будет хорошо для вас:)

...