【Cocos2d-x 3.0 基础系列一】 各类回调函数写法汇总
2017-07-19 21:24
477 查看
一、button回调
1. Lambda 表达式,C++11 Lambda 赋予了Cocos2d-x 3.0创建回调函数的灵活性。auto itemNor = Sprite::create("CloseNormal.png"); auto menuItem = MenuItemSprite::create(itemNor,nullptr,nullptr,[](Ref* sender) { log("show this msg."); }); auto menu = Menu::create(menuItem,nullptr); this->addChild(menu);
2.宏定义bind方式创建回调.
auto itemNor = Sprite::create("CloseNormal.png"); auto menuItem = MenuItemSprite::create(itemNor,nullptr,nullptr,CC_CALLBACK_1(HelloWorld::menuCloseCallback,this)); auto menu = Menu::create(menuItem,nullptr); this->addChild(menu); void HelloWorld::menuCloseCallback(Ref* pSender) { log("show this msg."); }
3.MenuToggleItem回事件回调
auto toggleSpNor = Label::createWithSystemFont("OPEN_BAME","WRYH",65); auto toggleSpSel = Label::createWithSystemFont("CLOSE_BAME","WRYH",65); auto toggleSpDis = Label::createWithSystemFont("DISABLE_BAME","WRYH",65); auto toggleItemNor = MenuItemLabel::create(toggleSpNor); auto toggleItemSel = MenuItemLabel::create(toggleSpSel); auto toggleItemDis = MenuItemLabel::create(toggleSpDis); auto toggleItem = MenuItemToggle::createWithCallback(CC_CALLBACK_0(HelloWorld::toggleCallBack,this),toggleItemNor,toggleItemSel,nullptr); auto toggleMenu = Menu::create(toggleItem,nullptr); this->addChild(toggleMenu); void HelloWorld::toggleCallBack() { log("Do something when toggle did touched.."); }
二、定时器回调
/*周期定时调用*/ this->schedule(SEL_SCHEDULE(&HelloWorld::gameStep)); /*倒计是定时调用一次*/ this->scheduleOnce(SEL_SCHEDULE(&HelloWorld::gameStep),3.0f);\ /*周期定时调用update需重写update方法*/ this->scheduleUpdate(); void HelloWorld::gameStep(float dt) { log("on timer..."); }
三、触屏事件回调
auto touchEvt = cocos2d::EventListenerTouchOneByOne::create(); touchEvt->onTouchBegan = CC_CALLBACK_2(HelloWorld::onTouchBegan,this); touchEvt->onTouchMoved = CC_CALLBACK_2(HelloWorld::onTouchMoved,this); touchEvt->onTouchEnded = CC_CALLBACK_2(HelloWorld::onTouchEnded,this); touchEvt->onTouchCancelled = CC_CALLBACK_2(HelloWorld::onTouchCancelled,this); Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(touchEvt,this); bool HelloWorld::onTouchBegan(cocos2d::Touch* touch,cocos2d::Event* evt) { log("Touch began.."); return true; } void HelloWorld::onTouchMoved(cocos2d::Touch* touch,cocos2d::Event* evt) { log("Touch moved.."); } void HelloWorld::onTouchEnded(cocos2d::Touch* touch,cocos2d::Event* evt) { log("Touch leave.."); Director::getInstance()->getEventDispatcher()->removeEventListenersForTarget(this); } void HelloWorld::onTouchCancelled(cocos2d::Touch* touch,cocos2d::Event* evt) { log("Something was happend , touch event is cut.."); }
四、动作回调
auto callBack = CallFunc::create(CC_CALLBACK_0(HelloWorld::actionCallBack,this)); this->runAction(callBack); void HelloWorld::actionCallBack() { log("Do something when action did finished.."); }
五、自己定义事件回调
auto callBack = [](EventCustom* evt) { log("catch an custom event!!"); }; cocos2d::EventListenerCustom* customEvt = EventListenerCustom::create("ME_CUSTOM_EVENT_TEST",callBack); //注冊自己定义事件(处理优先级为12) Director::getInstance()->getEventDispatcher()->addEventListenerWithFixedPriority(customEvt,12); //抛出自己定义事件 Director::getInstance()->getEventDispatcher()->dispatchCustomEvent("ME_CUSTOM_EVENT_TEST");
相关文章推荐
- 【Cocos2d-x 3.0 基础系列一】 各类回调函数写法汇总
- Swift3.0带来的变化汇总系列三——函数和闭包写法上的微调
- ActionScript 3.0 Step By Step系列(五):走在面向对象开发的路上,以类为基础去思考编程问题
- 使用Cocos2d的从零基础开始你的游戏生涯(系列之一 基础简单Objective-C入门)
- 火云开发课堂 - 《使用Cocos2d-x 开发3D游戏》系列 第六节:VS基础:树木的摇动
- Cocos2d-x 3.0 回调函数的变化 .
- Cocos2d-x 3.0final 终结者系列教程19脚本编程-Lua语法基础
- cocos2d-x 3.0 场景切换特效汇总
- cocos2d-x 3.0 场景切换特效汇总
- Node.js系列基础学习-----回调函数,异步
- Cocos2d-X研究之3.0 场景切换特效汇总
- cocos2d-x 3.0 引用第三方库 及编译成apk时android mk文件写法
- C#基础知识系列四(运算符汇总)
- cocos2d-x 3.0 场景切换特效汇总
- cocos2d-x 3.0 场景切换特效汇总
- 从零开始学_JavaScript_系列(四)——jquery(基础,选择器,触发条件,动画,回调函数)
- 火云开发课堂 - 《使用Cocos2d-x 开发3D游戏》系列 第七节:PS基础:UV动画
- 【Cocos2d-x 3.0 中文基础教程】精灵帧缓存
- cocos2d-x-lua基础系列教程一(hello lua)
- Cocos2d-x 3.0 新特性体验(2) 回调函数的变化