Я пытаюсь написать какую-нибудь игру с cocos2d-x
, и я пытаюсь определить какое-то пользовательское событие, например on_game_start
, on_game_end
и т. Д. Я искал форум и искал в Интернете, кажется, не слишком много упоминает об этом. Итак, кто-нибудь, пожалуйста, дайте мне несколько советов по этому поводу? Благодарю.Пользовательское событие с cocos2dx
ответ
Похоже, что в cocos2d-x нет глобального события. Поэтому я попытался использовать CCNotificationCenter в качестве альтернативы.
Вот код, как я использовал:
//Send event.
CCNotificationCenter::sharedNotificationCenter()->postNotification(EMEMY_KILLED_MSG, (CCObject*)data);
//Listen event.
void GameManager::initListener()
{
CCNotificationCenter::sharedNotificationCenter()->addObserver(this, callfuncO_selector(GameManager::onEnemyKilled), CLICK_TEST_MSG, NULL);
}
//Handling event
void GameManager::onEnemyKilled(CCObject* obj)
{
CCMessageBox("onEnemyKilled", "Title");
//Remove event listener.
CCNotificationCenter::sharedNotificationCenter()->removeObserver(this, EMEMY_KILLED_MSG);
}
Я думаю, что ваше «настраиваемое событие» означает «вызов функции при входе/выходе из игровой сцены». Таким образом, вы можете написать функцию инициализации, например void on_game_start()
, и добавить ее в функцию сцены onEnterTransitionDidFinish()
, которая автоматически вызывается движком. Также вам необходимо реализовать свой собственный класс сцены, унаследованный от CCScene
, не забудьте реализовать эту виртуальную функцию onEnterTransitionDidFinish()
в вашем собственном подклассе.
Привет, Rect, спасибо за ответ. Я хотел бы иметь такие события, как on_game_start, on_enemy_killed и т. Д., Которые могут быть распределены по всему миру, а не вызовы на основе сцены или узла, такие как события key & touch. – David
Это не «обратный вызов», если вы читаете исходный код сенсорных событий, вы можете видеть, что он был реализован классом, который также можно рассматривать как «делегат» в Obj-C. Вы можете попытаться реализовать свои собственные. –
Что вы имеете в виду «событие»? –
По событию, я имею в виду такие события, как событие касания, ключевое событие и т. Д. – David