Cocos2d-x 多点触摸
2024-08-31 12:59:09
多点触摸的实现步骤与单点触摸类似,setTouchEnabled(true)开启触摸功能,注冊触摸事件,重载多点触摸函数:ccTouchesBegan(開始)、ccTouchesMoved(移动)、ccTouchesEnded(结束)、ccTouchesCancelled(系统中断取消触摸事件),每一个多点触摸函数都能够通过遍历整个CCSet来获得全部的触点。
程序代码:
头文件增加触摸重载函数:
virtual void registerWithTouchDispatcher(void);
virtual void ccTouchesBegan(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent);
virtual void ccTouchesMoved(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent);
virtual void ccTouchesEnded(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent);
virtual void ccTouchesCancelled(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent);
cpp文件增加:
setTouchEnabled(true);
定义实现这些函数:
void HelloWorld::registerWithTouchDispatcher()
{
CCDirector *pdir = CCDirector::sharedDirector();
pdir->getTouchDispatcher()->addStandardDelegate(this, 0);
}
void HelloWorld::ccTouchesBegan(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent)
{
CCSetIterator iter = pTouches->begin();
for (; iter != pTouches->end(); iter++)
{
CCTouch* pTouch = (CCTouch*)(*iter); CCPoint location = pTouch->getLocation();
CCLOG("ccTouchesBegan x: %f, y: %f", location.x, location.y); }
} void HelloWorld::ccTouchesEnded(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent)
{
CCSetIterator iter = pTouches->begin();
for (; iter != pTouches->end(); iter++)
{
CCTouch* pTouch = (CCTouch*)(*iter); CCPoint location = pTouch->getLocation();
CCLOG("ccTouchesEnded x: %f, y: %f", location.x, location.y); }
}
void HelloWorld::ccTouchesMoved(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent)
{
CCSetIterator iter = pTouches->begin();
for (; iter != pTouches->end(); iter++)
{
CCTouch* pTouch = (CCTouch*)(*iter); CCPoint location = pTouch->getLocation();
CCLOG("ccTouchesMoved x: %f, y: %f", location.x, location.y); }
}
void HelloWorld::ccTouchesCancelled(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent)
{
CCSetIterator iter = pTouches->begin();
for (; iter != pTouches->end(); iter++)
{
CCTouch* pTouch = (CCTouch*)(*iter); CCPoint location = pTouch->getLocation();
CCLOG("x: %f, y: %f", location.x, location.y); }
}
最新文章
- Java设计模式之行为型模式
- JS回调函数全解析教程
- IC卡复位应答ATR的数据元和它们的意义
- [原创]CI持续集成系统环境---部署gerrit环境完整记录
- BZOJ3410: [Usaco2009 Dec]Selfish Grazing 自私的食草者
- 调用opencv打开不摄像头
- SSH自动断开连接的原因
- 关于sleep()和interrupt()及主线程和线程
- SQL的case when then else end语句的用法
- 爬虫高性能 asyncio库 twisted库 tornado库
- Ansys热应力计算
- C++ 标准 和 C 标准 (截止到2019年03月)
- Manager解决Process进程之间的数据访问
- thinkphp5中使用PHPExcel(转载)
- 【转】Ubuntu FireFox无法播放网页视频音乐的解决办法
- Roman To Integer leetcode java
- redmine创建新闻,自动发邮件给项目组所有成员
- [ASP.NET]NTKO插件使用常见问题
- Apple ID地区怎么改为美国?(转载)
- Oracle 11G RAC:生产环境下架构
热门文章
- Android广播机制分析
- 【翻译自mos文章】11.2.0.4及更高版本号的asm实例中MEMORY_TARGET 和 MEMORY_MAX_TARGET的默认值和最小值
- codecombat之边远地区的森林1-11关及地牢38关代码分享
- 11. Container With Most Water[M]盛最多水的容器
- WPF动态控件生成查找不到问题
- IP地址转化为数字,charindex ,SUBSTRING
- 微信小程序和App的UI设计有什么异同吗?
- tomcat 和 jboss的热部署(热发布)问题
- linux 下vim中关于删除某段,某行,或者全部删除的命令
- 全球NTP服务器列表