各种事件的回调函数写法
2016-07-08 16:07
639 查看
一、按钮回调
1. Lambda 表达式,C++11 Lambda 赋予了Cocos2d-x 3.0创建回调函数的灵活性。
[cpp]
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方式创建回调.
[cpp]
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回事件回调
[cpp]
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..");
}
二、定时器回调
[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
this->schedule(SEL_SCHEDULE(&HelloWorld::gameStep));
this->scheduleOnce(SEL_SCHEDULE(&HelloWorld::gameStep),3.0f);\
this->scheduleUpdate();
void HelloWorld::gameStep(float dt)
{
log("on timer...");
}
三、触屏事件回调
[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
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..");
}
四、动作回调
[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
auto callBack = CallFunc::create(CC_CALLBACK_0(HelloWorld::actionCallBack,this));
this->runAction(callBack);
void HelloWorld::actionCallBack()
{
log("Do something when action did finished..");
}
五、自定义事件回调
[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
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");
1. Lambda 表达式,C++11 Lambda 赋予了Cocos2d-x 3.0创建回调函数的灵活性。
[cpp]
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方式创建回调.
[cpp]
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回事件回调
[cpp]
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..");
}
二、定时器回调
[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
this->schedule(SEL_SCHEDULE(&HelloWorld::gameStep));
this->scheduleOnce(SEL_SCHEDULE(&HelloWorld::gameStep),3.0f);\
this->scheduleUpdate();
void HelloWorld::gameStep(float dt)
{
log("on timer...");
}
三、触屏事件回调
[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
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..");
}
四、动作回调
[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
auto callBack = CallFunc::create(CC_CALLBACK_0(HelloWorld::actionCallBack,this));
this->runAction(callBack);
void HelloWorld::actionCallBack()
{
log("Do something when action did finished..");
}
五、自定义事件回调
[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
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");
相关文章推荐
- UVA 12034 Race
- spring中@param和mybatis中@param使用区别
- Apache Geode Region 压缩介绍
- cocos事件响应机制
- Win10如何设置相关性
- SQL中的case when then else end用法
- jquery的template模版功能
- linux学习6:文件内容查阅
- (原)ubuntu14及ubuntu16中安装docker
- Java双缓冲技术详解
- 怎么区别java程序员技术级别?
- 7.8微信项目与重构
- 如何利用php+ajax动态交换数据
- h5和ios原生混合开发,h5数据列表页面上滑崩溃
- Visible Lattice Points(欧拉公式,==模版)
- Caffe之学习网络参数
- MySQL学习笔记汇总
- 使用boost实现python调用c++
- 关于Petri网的学习笔记
- Oracle查询哪个表锁住