2013-05-22 1 views
3

Я пытаюсь написать какую-нибудь игру с cocos2d-x, и я пытаюсь определить какое-то пользовательское событие, например on_game_start, on_game_end и т. Д. Я искал форум и искал в Интернете, кажется, не слишком много упоминает об этом. Итак, кто-нибудь, пожалуйста, дайте мне несколько советов по этому поводу? Благодарю.Пользовательское событие с cocos2dx

+0

Что вы имеете в виду «событие»? –

+2

По событию, я имею в виду такие события, как событие касания, ключевое событие и т. Д. – David

ответ

1

Похоже, что в 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); 
} 
0

Я думаю, что ваше «настраиваемое событие» означает «вызов функции при входе/выходе из игровой сцены». Таким образом, вы можете написать функцию инициализации, например void on_game_start(), и добавить ее в функцию сцены onEnterTransitionDidFinish(), которая автоматически вызывается движком. Также вам необходимо реализовать свой собственный класс сцены, унаследованный от CCScene, не забудьте реализовать эту виртуальную функцию onEnterTransitionDidFinish() в вашем собственном подклассе.

+0

Привет, Rect, спасибо за ответ. Я хотел бы иметь такие события, как on_game_start, on_enemy_killed и т. Д., Которые могут быть распределены по всему миру, а не вызовы на основе сцены или узла, такие как события key & touch. – David

+0

Это не «обратный вызов», если вы читаете исходный код сенсорных событий, вы можете видеть, что он был реализован классом, который также можно рассматривать как «делегат» в Obj-C. Вы можете попытаться реализовать свои собственные. –

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

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