cocos2d-x CCScene注册触摸事件
来源:互联网 发布:阿里云选择镜像 编辑:程序博客网 时间:2024/05/19 00:48
刚学习,今天遇到开启触摸,发现
this->setTouchEnabled(true); 这句话始终没有,原来是在
CCScene
中,没有这个方法,如果非要在其中,可以先让这个ccscene类实现CCStandardTouchDelegate这个接口,然后实现响应的4个方法;
到底this->setTouchEnabled(true);发生了什么事,分析源码,不难发现他们经过:
1、
this->registerWithTouchDispatcher();
2、
CCTouchDispatcher* pDispatcher =CCDirector::sharedDirector()->getTouchDispatcher();
pDispatcher->addStandardDelegate(this,0);
这样得话,我们其实还得在这个类的init中加上,这句话
CCDirector::sharedDirector()->getTouchDispatcher()->addStandardDelegate(this, 0);
这样场景中得层可以监听,
也就是不需要this->setTouchEnabled(true);
ps:分析源码,其实在我们OnEnter(),方法中也调用了this->registerWithTouchDispatcher();只不过,m_bTouchEnabled 默认false;
void CCLayer::onEnter()
{
CCDirector* pDirector = CCDirector::sharedDirector();
// register 'parent' nodes first
// since events are propagated in reverseorder
if (m_bTouchEnabled)
{
this->registerWithTouchDispatcher();
}
..............
}
呵呵,在 CCLayer中可以直接用CCDirector::sharedDirector()->getTouchDispatcher()->addStandardDelegate(this, 0); 代替this->setTouchEnabled(true);等于 脱了裤子放屁!
需要此对象实现CCStandardTouchDelegate接口。
使用addStandardDelegate方法把自己注册给触摸事件分发器。
重载事件回调函数,处理触摸事件;
当不再需要接收触摸事件时,使用removeDelegate方法来注销触摸事件的接收。
- cocos2d-x CCScene注册触摸事件
- 【cocos2d-x】CCScene
- cocos2d-x触摸事件优先级
- cocos2d-x 精灵触摸事件
- cocos2d-x触摸事件优先级
- Cocos2d-x中触摸事件
- QUICK COCOS2D-X 触摸事件
- Cocos2d-x屏幕触摸事件
- cocos2d-x lua 触摸事件
- cocos2d.x单点触摸事件
- Cocos2d-X之触摸事件
- Cocos2d-x Lua 触摸事件
- cocos2d-x 3.13 触摸事件
- cocos2d-x 3.x之触摸事件
- cocos2d-x学习之CCScene
- cocos2d-x CCDirector管理CCScene
- cocos2d-x节点(CCScene)API
- cocos2d-x CCDirector管理CCScene
- Documentation/blockdev/cpqarray.txt
- Linux 下对输入数组打印出行号
- cocos2d-x 安装(重装)
- TOJ 2641 Gene
- HDU 4284 Travel(12年天津online floyd + tsp状态DP)
- cocos2d-x CCScene注册触摸事件
- 压缩感知学习资源
- github简单使用教程
- Android 4.2蓝牙介绍
- 终于用 C# 把 WebBrowser 页面中的 js 变量取出来了!
- 运算符的结合运用实例
- Ruby-China网站
- error LNK2001: 无法解析的外部符号 "public: virtual long __stdcall CBaseFilter
- Elf