cocos2d-x中的多点触摸的问题
来源:互联网 发布:python 拷贝文件 编辑:程序博客网 时间:2024/04/26 16:13
设计到坐标转换问题,cocos2dx里有几种坐标系:UI坐标系、GL坐标系、本地坐标系和世界坐标系:
UI坐标系:以屏幕的左上角为原点,X坐标向左为正,Y坐标向下为正,一些touch事件获取到的坐标就是以这个坐标系为标准的。
GL坐标系:也就是openGL坐标系,以屏幕的左下角为原点,X坐标向左为正,Y坐标向上为正,cocos2dx引擎底层是openGL,也用这个坐标系,一些控件的添加或设置是以这个坐标系为准的。
本地坐标系:子节点的左下角相对于父节点左下角的坐标,也就是以父节点的左下角为坐标原点,X坐标向左为正,Y坐标向上为正。boundingBox 方法获取到的节点的rect的坐标就是这个坐标。
cocos2dx提供了一些方法来实现不同坐标系的转换,其实cocos2dx也提供了直接从触摸点的参数里获取GL坐标。
ccTouchesMoveed方法实现如下:
1 void HeroLayer::ccTouchesMoved(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent) 2 { 3 /* 4 * 坐标系统 5 * cocos2dx坐标系统(opengl坐标系统):以左下角为原点 6 * UI坐标系统(绘图坐标系统、纹理坐标系统):以左上角为原点 7 */ 8 9 //hero是否还活着 10 if(this->m_IsHeroLive)11 { 12 /*13 * 触摸事件获取坐标的几个方法14 *15 * getLocation:获取触摸时第一点的cocos2dx 坐标16 * getPreviousLocation 获取触摸时最后一点 cocos2dx 坐标17 * getLocationInView 获取触摸时第一点的UI坐标18 * getPreviousLocationInView 获取触摸时的最后一点 UI坐标19 */20 21 CCTouch *touches = (CCTouch*)pTouches->anyObject();22 23 CCPoint beginPoint = touches->getLocation();//获取触摸坐标(cocos2dx坐标系统的)24 25 CCRect planeRect = this->m_Hero->boundingBox();//获取飞机当前位置形状位置 26 27 //允许稍微加大一点触摸位置,游戏实际需要 28 //planeRect.origin.x -= 15; 29 //planeRect.origin.y -= 15; 30 //planeRect.size.width += 30; 31 //planeRect.size.height += 30;32 33 if(planeRect.containsPoint(beginPoint))34 { 35 CCPoint endPoint = touches->getPreviousLocation();//获取触摸的前一个位置 36 HeroLayer::moveHero(endPoint); //移动飞机 37 } 38 } 39 }
在cocos2d-x中,对于触摸事件有两种模式:
大家都知道,第一种为
CCDirector::sharedDirector()->getTouchDispatcher()->addStandardDelegate(this, 0);//添加触摸委托,
也是cclayer默认的模式,可用于多点触摸;
第二种为
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetDelegate(this, 0);//添加触摸委托,
它将会把多点拆为单点进行传递
现在要说的是第一种,要实现多点触摸,
首先得设置几个关键的地方
1。setTouchEnabled(true); //允许触摸
2。CCDirector::sharedDirector()->getTouchDispatcher()->addStandardDelegate(this, 0);//添加触摸委托,
3。也是比较隐蔽的,
在默认的ios目录下的AppController.mm文件里,
设置 [__glView setMultipleTouchEnabled:YES]; //设置多点触摸关键部位;
如果不设置此处,程序将依然知响应单点触摸。
现在就可以显示多点触摸了。
- cocos2d-x中的多点触摸的问题
- 关于cocos2d-x中的多点触摸的问题
- cocos2d-x 多点触摸
- Cocos2d-x 多点触摸
- Cocos2d-x 多点触摸
- cocos2d-x多点触摸以及ios模拟器模拟多点触摸
- 【Cocos2d-x】 3.0 IOS 开启多点触摸
- Cocos2d-x 怎样支持多点触摸(IOS上多点失灵的解决方法)
- Cocos2d触摸:多点触摸
- cocos2d-x——触摸事件(多点触摸)
- cocos2d中启用多点触摸的方法
- cocos2d - 多点触摸
- cocos2d - 多点触摸
- cocos2d多点触摸
- Cocos2d-x_多点触摸
- quick-cocos2d-x游戏开发【11】——多点触摸
- quick-cocos2d-x游戏开发【11】——多点触摸
- cocos2d-x接受键盘事件,左右键, 多点触摸
- 使用Loaders
- git 分支的创建与合并
- 营销策略:夸人不是拍马屁
- ACCESS 使用UNION 关联多个表或多个已有的查询
- ConcurrentHashMap原理分析
- cocos2d-x中的多点触摸的问题
- 计算机视觉的顶级国际会议
- 关于C 语言分母为0后的后果
- sed系列:行或者模式匹配删除特定行
- 老板怎么舍得你离开?-让我来教你如何拍马屁
- 8个 jQuery技巧攻略
- oracle查询实例
- u-boot启动流程-第一阶段
- makefile 入门指南实例——深度优先迷宫搜索