码迷,mamicode.com
首页 > 其他好文 > 详细

Cocos2d-x 3.0 回调函数

时间:2015-01-19 15:47:06      阅读:489      评论:0      收藏:0      [点我收藏+]

标签:

一、按钮回调

1. Lambda 表达式,C++11 Lambda 赋予了Cocos2d-x 3.0创建回调函数的灵活性。

  1. auto itemNor    =   Sprite::create("CloseNormal.png");  
  2. auto menuItem   =   MenuItemSprite::create(itemNor,nullptr,nullptr,[](Ref* sender)  
  3. {  
  4.     log("show this msg.");  
  5. });  
  6. auto menu   =   Menu::create(menuItem,nullptr);  
  7. this->addChild(menu);  
2.宏定义bind方式创建回调.
  1. auto itemNor    =   Sprite::create("CloseNormal.png");  
  2. auto menuItem   =   MenuItemSprite::create(itemNor,nullptr,nullptr,CC_CALLBACK_1(HelloWorld::menuCloseCallback,this));  
  3. auto menu   =   Menu::create(menuItem,nullptr);  
  4. this->addChild(menu);  
  5.   
  6. void HelloWorld::menuCloseCallback(Ref* pSender)  
  7. {  
  8.     log("show this msg.");  
  9. }  
3.MenuToggleItem回事件回调
  1. auto toggleSpNor    =   Label::createWithSystemFont("OPEN_BAME","WRYH",65);  
  2. auto toggleSpSel    =   Label::createWithSystemFont("CLOSE_BAME","WRYH",65);  
  3. auto toggleSpDis    =   Label::createWithSystemFont("DISABLE_BAME","WRYH",65);  
  4. auto toggleItemNor  =   MenuItemLabel::create(toggleSpNor);  
  5. auto toggleItemSel  =   MenuItemLabel::create(toggleSpSel);  
  6. auto toggleItemDis  =   MenuItemLabel::create(toggleSpDis);  
  7.   
  8. auto toggleItem     =   MenuItemToggle::createWithCallback(CC_CALLBACK_0(HelloWorld::toggleCallBack,this),toggleItemNor,toggleItemSel,nullptr);  
  9.   
  10. auto toggleMenu =   Menu::create(toggleItem,nullptr);  
  11. this->addChild(toggleMenu);  
  12.   
  13. void HelloWorld::toggleCallBack()  
  14. {  
  15.     log("Do something when toggle did touched..");  
  16. }  

二、定时器回调

  1. /*周期定时调用*/  
  2. this->schedule(SEL_SCHEDULE(&HelloWorld::gameStep));  
  3. /*倒计是定时调用一次*/  
  4. this->scheduleOnce(SEL_SCHEDULE(&HelloWorld::gameStep),3.0f);\  
  5. /*周期定时调用update需重写update方法*/  
  6. this->scheduleUpdate();  
  7.   
  8. void HelloWorld::gameStep(float dt)  
  9. {  
  10.     log("on timer...");  
  11. }  

三、触屏事件回调

  1. auto touchEvt           =   cocos2d::EventListenerTouchOneByOne::create();  
  2. touchEvt->onTouchBegan       =   CC_CALLBACK_2(HelloWorld::onTouchBegan,this);  
  3. touchEvt->onTouchMoved       =   CC_CALLBACK_2(HelloWorld::onTouchMoved,this);  
  4. touchEvt->onTouchEnded      =    CC_CALLBACK_2(HelloWorld::onTouchEnded,this);  
  5. touchEvt->onTouchCancelled     = CC_CALLBACK_2(HelloWorld::onTouchCancelled,this);  
  6.   
  7. Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(touchEvt,this);  
  8.   
  9. bool HelloWorld::onTouchBegan(cocos2d::Touch* touch,cocos2d::Event* evt)  
  10. {  
  11.     log("Touch began..");  
  12.     return true;  
  13. }  
  14. void HelloWorld::onTouchMoved(cocos2d::Touch* touch,cocos2d::Event* evt)  
  15. {  
  16.     log("Touch moved..");  
  17. }  
  18. void HelloWorld::onTouchEnded(cocos2d::Touch* touch,cocos2d::Event* evt)  
  19. {  
  20.     log("Touch leave..");  
  21.     Director::getInstance()->getEventDispatcher()->removeEventListenersForTarget(this);  
  22. }  
  23. void HelloWorld::onTouchCancelled(cocos2d::Touch* touch,cocos2d::Event* evt)  
  24. {  
  25.     log("Something was happend , touch event is cut..");  
  26. }  

四、动作回调

  1. auto callBack       =   CallFunc::create(CC_CALLBACK_0(HelloWorld::actionCallBack,this));  
  2. this->runAction(callBack);  
  3.   
  4. void HelloWorld::actionCallBack()  
  5. {  
  6.     log("Do something when action did finished..");  
  7. }  

五、自定义事件回调

  1. auto callBack       =   [](EventCustom* evt)  
  2.                             {  
  3.                                 log("catch an custom event!!");  
  4.                             };  
  5. cocos2d::EventListenerCustom* customEvt =   EventListenerCustom::create("ME_CUSTOM_EVENT_TEST",callBack);  
  6. //注册自定义事件(处理优先级为12)  
  7. Director::getInstance()->getEventDispatcher()->addEventListenerWithFixedPriority(customEvt,12);  
  8.   
  9. //抛出自定义事件  
  10. Director::getInstance()->getEventDispatcher()->dispatchCustomEvent("ME_CUSTOM_EVENT_TEST");  

Cocos2d-x 3.0 回调函数

标签:

原文地址:http://blog.csdn.net/w174504744/article/details/42873621

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!