cocos2d-x 自定义Touch事件处理类
来源:互联网 发布:uefi修复windows引导 编辑:程序博客网 时间:2024/05/23 21:29
对Touch事件的获取与处理可以使用CCLayer, CCMenuItem等,但是如果我们需要一个虚拟按键或者需要对特定精灵进行拖动等等,我们就需要自定义Touch类。
自定义Touch事件处理类重要的步骤是:
1. 继承CCTargetedTouchDelegate
2. 添加addTargetedDelegate(pDelegate, nPriority, bSwallowsTouches),来获取Touch事件,第二个参数是优先级,越高越优先。
3. 根据自己的需要override Touch事件处理函数:
virtual bool ccTouchBegan(CCTouch* touch, CCEvent* event);
virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);
virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent);
如下是实例:这里添加一个自定义的Button到场景层。
#include <cocos2d.h>USING_NS_CC;class MyButton : public CCNode, public CCTargetedTouchDelegate{public:MyButton(void);~MyButton(void);virtual void onEnter();virtual void onExit();virtual bool ccTouchBegan(CCTouch* touch, CCEvent* event);virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent);virtual bool init();CREATE_FUNC(MyButton);private:CCSprite *m_ShowPic;};
#include "MyButton.h"MyButton::MyButton(void):m_ShowPic(NULL){}MyButton::~MyButton(void){}bool MyButton::init(){ bool bRet = false; do {CCSize winSize = CCDirector::sharedDirector()->getWinSize(); m_ShowPic = CCSprite::create("share.png");m_ShowPic->setPosition(ccp(winSize.width/2, winSize.height/2));this->addChild(m_ShowPic); bRet = true; } while(0); return bRet;}void MyButton::onEnter(){CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, true);CCNode::onEnter();}void MyButton::onExit(){CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);CCNode::onExit();}bool MyButton::ccTouchBegan(CCTouch* touch, CCEvent* event){CCLog("MyButton Touch Began!");return true;}void MyButton::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent){CCLog("MyButton Touch Move!");}void MyButton::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent){CCLog("MyButton Touch Ended!");}
将以下代码其添加到HelloWorldScene::init中,
////////////////////////////// Add MyButtonMyButton *button = MyButton::create();this->addChild(button, 10);button->setPosition(CCPointZero);运行测试:
在屏幕中点击可以看到Output中显示了我们的CCLog提示
可是我们没有点击到图片时也会提示出CCLog,这并不是我们想要的。
那么我们就需要添加自己需要的Touch事件处理代码了:
例如如下:
bool MyButton::ccTouchBegan(CCTouch* touch, CCEvent* event){CCPoint position = convertTouchToNodeSpaceAR(touch);if (!m_ShowPic->boundingBox().containsPoint(position))return false;CCLog("MyButton Touch Began!");// add your code...return true;}void MyButton::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent){CCLog("MyButton Touch Move!");// add your code...}void MyButton::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent){CCLog("MyButton Touch Ended!");// add your code...}
- cocos2d-x 自定义Touch事件处理类
- Cocos2d-x Touch事件处理
- cocos2d-x 自定义Touch事件触屏:
- cocos2d-x Touch事件处理机制
- cocos2d-x Touch事件处理机制
- cocos2d-x Touch事件处理机制
- cocos2d-x Touch事件处理机制
- cocos2d-x Touch事件处理机制
- cocos2d-x Touch事件处理机制
- cocos2d-x Touch事件处理机制
- cocos2d-x Touch事件处理机制
- cocos2d-x Touch事件处理机制
- Cocos2d-x之Touch事件处理机制
- Cocos2d-x Touch事件处理机制
- Cocos2d-x之Touch事件处理机制
- Cocos2d-x之Touch事件处理机制
- cocos2d-x Touch事件处理机制
- Cocos2d-x之Touch事件处理机制
- 【最权威】云计算的NIST定义
- POJ 1026 java语言
- Java陷阱(三)
- HDU 1263 水果 map容器
- 【黑马程序员】错误:“未安装全文搜索或无法加载某一全文组件”的解决方法
- cocos2d-x 自定义Touch事件处理类
- Android sdcard创建文件夹及写入工程目录视频资源
- iOS ASI http 框架详解
- 使用GruntJS搭建前端本地开发环境 (零)
- PHP扩展库开发
- iOS开发如何实现消息推送机制
- 逆向与反汇编工具
- 生成图片验证码
- 利用rowid删除重复记录保留一行