[cocos2d-x]坐标系,触屏自定义检测CCSprite的点击拖动等信息
来源:互联网 发布:7.23温州动车事故 知乎 编辑:程序博客网 时间:2024/06/16 23:06
http://blog.csdn.net/chiuan/article/details/8596465
一、cocos2d-x中的2个常用坐标系:
屏幕坐标系:默认原点在左上角,x轴向右、y轴向下
-------------------------------------------->x轴
|
|
|
|
v
y轴
GL坐标系:默认原点在左下角,x轴向右、y轴向上(怎么记忆?这么明显GL,L字是不是和下图很像呢?)
y轴
|
|
|
|
----------------------------------------->x轴
二、坐标系的使用
2.1、屏幕坐标系:
一般使用在Touch事件中,也就是默认Touch事件处理(能获取)的是屏幕坐标系。想想我们手指按的是?当然是屏幕拉!
2.2、GL坐标系
理解:
关于3D世界里面的本地坐标系和世界坐标系,在cocos2d-x里面同样都是GL坐标系。也就是说,跟位置相关的处理,都是GL坐标系,但要注意区分是在本地,还是世界中。
例如Node中的setPosition处理的就是本地坐标-GL坐标系,我们关于本地和到世界坐标系的点互换,在CCNode中有提供相关便捷的方法:convertToNodeSpace、convertToWorldSpace等。
备注:
getContentSize 获得节点原始大小。
boundingBox 获得经过在父物体中缩放和旋转之后的外框大小。
例子:
关于平常我们使用特别要注意,是否判断在同一个坐标系系统中处理!
例如我们要实现CCSprite的触碰检测,但是这个CCSprite又放在一个CCLayer下面,这个CCLayer又放在一个CCSence下的某个CCLayer下。(-,-)其实就是多个层级的情况下。
- bool TDInvItemSlot::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent){
- CCRect rect = this->boundingBox();
- if ((&rect)->containsPoint(this->getParent()->convertTouchToNodeSpace(pTouch))) {
- CCLOG("selected.......");
- this->setTexture(selectedTexture);
- return true;
- }
- return false;
- }
以上判断中,先获取这个CCSprite的父物体,然后通过父物体把Touch(屏幕坐标信息)转到父物体的本地坐标系(GL坐标系)中,因为boundingBox()获取的就是在父物体中经过变化后的位置范围大小信息。
所以,熟悉Unity3D引擎的,我相信对本地坐标系和世界坐标系已经相当熟悉了,判断当然要在同一个相对“世界”,这里是父物体的世界中判断!
- [cocos2d-x]坐标系,触屏自定义检测CCSprite的点击拖动等信息
- [cocos2d-x]坐标系,触屏自定义检测CCSprite的点击拖动等信息
- cocos2d-X CCsprite点击问题
- cocos2d-x CCSprite添加点击事件注意事项
- 关于Cocos2d-x中使用自定义地图等对象的缩放与拖动的实现
- Cocos2d-x的坐标系
- Cocos2d-x 可响应触碰事件的 CCSprite
- cocos2d-x根据点击的位置来拖动精灵
- Cocos2d-x-->CCSprite 动画
- cocos2d-x ccsprite 详解
- cocos2d-x 中的 CCSprite
- Cocos2d-X中的CCSprite
- cocos2d-x的坐标系转换
- cocos2d-x自定义可点击/可处理事件/可接受触屏消息的Sprite
- CCSprite的惯性拖动
- 【iOS-cocos2d-X 游戏开发之十】自定义CCSprite/Layer/CCNode及静态类模版&自定义类细节说明&Cocos2dx触屏事件讲解
- (转)【iOS-cocos2d-X 游戏开发之十】自定义CCSprite/Layer/CCNode及静态类模版&自定义类细节说明&Cocos2dx触屏事件讲解
- cocos2d-x如何反白高亮CCSprite
- git基础
- 自己写的一个.net跨服务器查询方法
- Solution to CLRS Chapter 6
- Five must-know open source SDN controllers
- spring特性2-aop
- [cocos2d-x]坐标系,触屏自定义检测CCSprite的点击拖动等信息
- 0-1背包问题
- maya开洞的几种方法总结之一
- OPENCV的学习:图像特征检测之Harris角点算法
- 用JavaScript删除选中行
- DNN模型
- Crash和ANR简介及一些测试方法
- TCP&UDP编程
- VMware无法与物理机连通解决办法