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 ,倘若需要存储的数据量教大的话,建议使用数据库来存储 现在先给大家看一下 ...
随机推荐
- 企业架构研究总结(34)——TOGAF架构内容框架之架构制品(下)
4.2.31 数据生命周期图(Data Lifecycle Diagram) 数据生命周期图是在业务流程的约束之下对业务数据在其整个生命周期(从概念阶段到最终退出)中对其进行管理的核心部分.数据从本质 ...
- ubuntu下使用golang、qml与ubuntu sdk开发桌面应用
ubuntu下使用golang.qml与ubuntu sdk开发桌面应用 (简单示例) 找了很长时间go的gui库,试了gtk,准备试qt的时候发现了这个qml库,试了下很好用. 准备工作 1.Go ...
- 揭开redis神秘面纱
一直听别人说NoSQL,以前一直不明白,这到底是什么东西,今天听过我们涛哥的讲解,略有小感,特此小记. NoSQL(NoSQL = Not Only SQL),意为反SQL运动,是一项全新的数据库革命 ...
- 对象池化技术 org.apache.commons.pool
恰当地使用对象池化技术,可以有效地减少对象生成和初始化时的消耗,提高系统的运行效率.Jakarta Commons Pool组件提供了一整套用于实现对象池化的框架,以及若干种各具特色的对象池实现,可以 ...
- 【C#】调用DOS命令
public interface IRunConsole { void Run(); } public abstract class RunConsole:IRunConsole { public a ...
- 对无返回值、使用Action或Func作为参数、多重载的方法进行单元测试
VS2012 Unit Test(Void, Action, Func) —— 对无返回值.使用Action或Func作为参数.多重载的方法进行单元测试 [提示] 1. 阅读文本前希望您具备如下知识: ...
- ASP.NET页面之间传递值的几种方式(转载)
页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值.存储对象传值.ajax.类.model.表单等.但是一般来说,常用的较简单有QueryString,Session,Cookie ...
- HTTP header 介绍
HTTP(Hyper Text Transfer Protocol)是超文本传输协议的缩写,它用于传送www方式的数据.HTTP协议采用了请求/响应模型.客服端向服务器发送一个请求,请求头包含请求的方 ...
- VS调试的简单技巧
学习之路三十二:VS调试的简单技巧 这段时间园子里讲了一些关于VS的快捷键以及一些配置技巧,挺好的,大家一起学习,一起进步. 这段时间重点看了一下关于VS调试技巧方面的书,在此记录一下学习的内容吧 ...
- [置顶] iOS学习笔记47——图片异步加载之EGOImageLoading
上次在<iOS学习笔记46——图片异步加载之SDWebImage>中介绍过一个开源的图片异步加载库,今天来介绍另外一个功能类似的EGOImageLoading,看名字知道,之前的一篇学习笔 ...