cocos2dx 举例说明 convertToNodeSpace 与 convertToWorldSpace 的使用
convertToNodeSpace:把世界坐标转换到当前节点的本地坐标系中。
- //可以应用于判断子节点是否被点击,这时就需要把坐标从世界坐标系转换为父节点的坐标系。
- //当然大多数情况会用CCMenu,但有时CCMenu就不适用了,比如长按触发响应的时候。
- void HelloWorld::myInit14()
- {
- CCSize size = CCDirector::sharedDirector()->getWinSize();
- //创建父节点
- CCSprite* back = CCSprite::create("ui_miss_butt_bj2song.png");
- back->setPosition(ccp(size.width*0.5, size.height*0.5));
- this->addChild(back,1,123);
- //创建子节点
- CCSprite* buttonSP = CCSprite::create("team_ok_butt.png");
- buttonSP->setPosition(ccp(back->getContentSize().width*0.8, back->getContentSize().height*0.5));
- back->addChild(buttonSP,1,321);
- }
- bool HelloWorld::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)
- {
- beganPoint = pTouch->getLocation();
- return true;
- }
- void HelloWorld::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent)
- {
- CCPoint endPoint = pTouch->getLocation();
- CCSprite* back = (CCSprite*)this->getChildByTag(123);
- CCSprite* buttonSP = (CCSprite*)back->getChildByTag(321);
- //convertToNodeSpace 把世界坐标转换到当前节点的本地坐标系中。
- CCPoint nodeBeganPoint = back->convertToNodeSpace(beganPoint);
- CCPoint nodeEndPoint = back->convertToNodeSpace(endPoint);
- //判断子节点是否被点击
- if (buttonSP->boundingBox().containsPoint(nodeBeganPoint) && buttonSP->boundingBox().containsPoint(nodeEndPoint)) {
- CCLog("被点到了");
- }
- }
convertToWorldSpace:把基于当前节点的本地坐标系下的坐标转换到世界坐标系中。
- //sp3是sp2的子节点,sp2是sp1的子节点。
- void HelloWorld::myInit13()
- {
- CCSize size = CCDirector::sharedDirector()->getWinSize();
- CCSprite* sp1 = CCSprite::create("Icon.png");
- sp1->setPosition(ccp(size.width*0.5, size.height*0.5));
- this->addChild(sp1);
- CCSprite* sp2 = CCSprite::create("Icon.png");
- sp2->setColor(ccYELLOW);
- sp2->setPosition(ccp(sp1->getContentSize().width, sp1->getContentSize().height));
- sp1->addChild(sp2);
- CCSprite* sp3 = CCSprite::create("Icon.png");
- sp3->setColor(ccBLUE);
- sp3->setPosition(ccp(sp2->getContentSize().width, sp2->getContentSize().height));
- sp2->addChild(sp3);
- //convertToWorldSpace:把基于当前节点的本地坐标系下的坐标转换到世界坐标系中。
- CCPoint worldPoint = sp3->convertToWorldSpace(sp3->getAnchorPointInPoints());
- CCLog("worldX == %f, worldY == %f",worldPoint.x,worldPoint.y);
- //sp4正好覆盖掉sp3,说明转换到世界坐标系中的坐标正确。
- CCSprite* sp4 = CCSprite::create("Icon.png");
- sp4->setColor(ccGREEN);
- sp4->setPosition(worldPoint);
- this->addChild(sp4);
- }
cocos2dx 举例说明 convertToNodeSpace 与 convertToWorldSpace 的使用的更多相关文章
- 【COCOS2DX-游戏开发之三一】之 坐标系(下) convertToNodeSpace和convertToWorldSpace
游戏中常常会用到一些变换: 游戏中武器和角色在一个layer上,为了效率.会考虑将bullet, effect和 PhysicsParticle分别放到不用的层上,相应的层上使用batchnode来提 ...
- Cocos坐标之convertToNodeSpace、convertToWorldSpace、convertToNodeSpaceAR、convertToWorldSpaceAR区别和用法
convertToNodeSpace.convertToWorldSpace.convertToNodeSpaceAR.convertToWorldSpaceAR,在他们的下一层看到下面的注释: /* ...
- convertToNodeSpace和convertToWorldSpace ---实际应用
游戏中经常会用到一些变换: 游戏中武器和角色在一个layer上,为了效率,会考虑将bullet, effect和 PhysicsParticle分别放到不用的层上,对应的层上使用batchnode来提 ...
- cocos2d-x坐标系详解
cocos2d-x官方文档 笛卡尔坐标系 不同坐标系简介 笛卡尔坐标系 你可能上学的时候就已经知道“笛卡尔坐标系”了,它在几何课本里经常用到.如果你已经忘得差不多了,下面这些图片可以很快唤起你的记忆: ...
- Cocos2dx坐标转换
Cocos2dx坐标转换 这段时间加班有点猛,没有太多时间来写博客了,ok,继续完成任务: 前言 这里将会重点介绍四个函数: convertToNodeSpace convertToNodeSpace ...
- Cocos2d-x 详解坐标系统
这篇博文将介绍一下在cocos2dx中的一些坐标系统概念: 一. (1) OpenGL坐标系 Cocos2D-x以OpenGL和OpenGL ES为基础,所以自然支持OpenGL坐标系.该坐标系原点在 ...
- cocos2dx中的坐标系统
一. (1)OpenGL坐标系 Cocos2D-x以OpenGL和OpenGL ES为基础,所以自然支持OpenGL坐标系.该坐标系原点在屏幕左下角,x轴向右,y轴向上. (2)屏幕坐标系 屏幕坐标系 ...
- Coordinate System
Coordinate System Introduction of Different Coordinate Systems Cartesian Coordinate System UI Coordi ...
- cocos2dx游戏存储举例及其注意事项
今天白白跟大家分享一下cocos2dx中游戏的存储及需要注意的事项 cocos2dx中自带了存储类:CCUserDefault ,倘若需要存储的数据量教大的话,建议使用数据库来存储 现在先给大家看一下 ...
随机推荐
- HttpActionDescriptor,ASP.NET Web API又一个重要的描述对象
HttpActionDescriptor,ASP.NET Web API又一个重要的描述对象 通过前面对“HttpController的激活”的介绍我们已经知道了ASP.NET Web API通过Ht ...
- MySql主从配置实践及其优势浅谈
MySql主从配置实践及其优势浅谈 1.增加两个MySQL,我将C:\xampp\mysql下的MYSQL复制了一份,放到D:\Mysql2\Mysql5.1 修改my.ini(linux下应该是my ...
- 设置 Ext.data.Store 传参的请求方式
设置 Ext.data.Store 传参的请求方式 1.extjs 给怎么给panel设背景色 设置bodyStyle:'background:#ffc;padding:10px;', var res ...
- CentOS_6.5_x64:VNC安装配置
1.安装软件前首先检查下系统是否已经安装了这个软件:rpm -qa tigervnc-server 2.根据前面命令的查询,显示系统还是没有安装VNC服务器端软件,那么我们就使用命令进行安装一下:yu ...
- 成都传智播客JDBC视频及讲师介绍
成都传智播客java讲师,也许,你跟他很熟,你或者听过他的课,或者跟他争论过什么,又或者你们在一起共事,再者你们只是偶尔擦肩而过.在小编的印象中郭老师完全没有架子,和他相处会让你觉得不是面对一个老师, ...
- C# ASP.net 入门之简单通讯录
简单通讯录功能虽然简单,却包括了制作一个网站的基本功能!各个模块可以作为新手入门的参考. 简单通讯录实现功能:1.登录 2.注册 3.后台管理 4.前台登录显示 5.创建联系人 6.密码修改 代码下载 ...
- [每日一题] OCP1z0-047 :2013-07-15 drop column
如下实验: gyj@OCM> Create table emp( 2 Empno number(4) not null, 3 First_name varchar2( ...
- 关于EL表达式的生效时间(猜想)
通过ajax与服务端异步交互的时候,在服务端将某些变量或对象设置到request等域里,此时页面上的EL表达式是获取不到ajax异步交互时设置在request等域里的变量或对像的. 我猜测可能EL表达 ...
- 维吉尼亚密码java代码实现根据密钥长度计算IC值过程
package cn.longxuzi; import java.util.Scanner; import org.junit.Test; public class ICUtils { /** * @ ...
- [jstips]向数组中插入一个元素
向现有数组中插入一个元素是经常会见到的一个需求.你可以: 使用push将元素插入到数组的尾部: 使用unshift将元素插入到数组的头部: 使用splice将元素插入到数组的中间: 上面那些方法都是常 ...