convertToNodeSpace:把世界坐标转换到当前节点的本地坐标系中。

  1. //可以应用于判断子节点是否被点击,这时就需要把坐标从世界坐标系转换为父节点的坐标系。
  2. //当然大多数情况会用CCMenu,但有时CCMenu就不适用了,比如长按触发响应的时候。
  3. void HelloWorld::myInit14()
  4. {
  5. CCSize size = CCDirector::sharedDirector()->getWinSize();
  6. //创建父节点
  7. CCSprite* back = CCSprite::create("ui_miss_butt_bj2song.png");
  8. back->setPosition(ccp(size.width*0.5, size.height*0.5));
  9. this->addChild(back,1,123);
  10. //创建子节点
  11. CCSprite* buttonSP = CCSprite::create("team_ok_butt.png");
  12. buttonSP->setPosition(ccp(back->getContentSize().width*0.8, back->getContentSize().height*0.5));
  13. back->addChild(buttonSP,1,321);
  14. }
  15. bool HelloWorld::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)
  16. {
  17. beganPoint = pTouch->getLocation();
  18. return true;
  19. }
  20. void HelloWorld::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent)
  21. {
  22. CCPoint endPoint = pTouch->getLocation();
  23. CCSprite* back = (CCSprite*)this->getChildByTag(123);
  24. CCSprite* buttonSP = (CCSprite*)back->getChildByTag(321);
  25. //convertToNodeSpace 把世界坐标转换到当前节点的本地坐标系中。
  26. CCPoint nodeBeganPoint = back->convertToNodeSpace(beganPoint);
  27. CCPoint nodeEndPoint = back->convertToNodeSpace(endPoint);
  28. //判断子节点是否被点击
  29. if (buttonSP->boundingBox().containsPoint(nodeBeganPoint) && buttonSP->boundingBox().containsPoint(nodeEndPoint)) {
  30. CCLog("被点到了");
  31. }
  32. }
  33. convertToWorldSpace:把基于当前节点的本地坐标系下的坐标转换到世界坐标系中。

    1. //sp3是sp2的子节点,sp2是sp1的子节点。
    2. void HelloWorld::myInit13()
    3. {
    4. CCSize size = CCDirector::sharedDirector()->getWinSize();
    5. CCSprite* sp1 = CCSprite::create("Icon.png");
    6. sp1->setPosition(ccp(size.width*0.5, size.height*0.5));
    7. this->addChild(sp1);
    8. CCSprite* sp2 = CCSprite::create("Icon.png");
    9. sp2->setColor(ccYELLOW);
    10. sp2->setPosition(ccp(sp1->getContentSize().width, sp1->getContentSize().height));
    11. sp1->addChild(sp2);
    12. CCSprite* sp3 = CCSprite::create("Icon.png");
    13. sp3->setColor(ccBLUE);
    14. sp3->setPosition(ccp(sp2->getContentSize().width, sp2->getContentSize().height));
    15. sp2->addChild(sp3);
    16. //convertToWorldSpace:把基于当前节点的本地坐标系下的坐标转换到世界坐标系中。
    17. CCPoint worldPoint = sp3->convertToWorldSpace(sp3->getAnchorPointInPoints());
    18. CCLog("worldX == %f, worldY == %f",worldPoint.x,worldPoint.y);
    19. //sp4正好覆盖掉sp3,说明转换到世界坐标系中的坐标正确。
    20. CCSprite* sp4 = CCSprite::create("Icon.png");
    21. sp4->setColor(ccGREEN);
    22. sp4->setPosition(worldPoint);
    23. this->addChild(sp4);
    24. }

cocos2dx 举例说明 convertToNodeSpace 与 convertToWorldSpace 的使用的更多相关文章

  1. 【COCOS2DX-游戏开发之三一】之 坐标系(下) convertToNodeSpace和convertToWorldSpace

    游戏中常常会用到一些变换: 游戏中武器和角色在一个layer上,为了效率.会考虑将bullet, effect和 PhysicsParticle分别放到不用的层上,相应的层上使用batchnode来提 ...

  2. Cocos坐标之convertToNodeSpace、convertToWorldSpace、convertToNodeSpaceAR、convertToWorldSpaceAR区别和用法

    convertToNodeSpace.convertToWorldSpace.convertToNodeSpaceAR.convertToWorldSpaceAR,在他们的下一层看到下面的注释: /* ...

  3. convertToNodeSpace和convertToWorldSpace ---实际应用

    游戏中经常会用到一些变换: 游戏中武器和角色在一个layer上,为了效率,会考虑将bullet, effect和 PhysicsParticle分别放到不用的层上,对应的层上使用batchnode来提 ...

  4. cocos2d-x坐标系详解

    cocos2d-x官方文档 笛卡尔坐标系 不同坐标系简介 笛卡尔坐标系 你可能上学的时候就已经知道“笛卡尔坐标系”了,它在几何课本里经常用到.如果你已经忘得差不多了,下面这些图片可以很快唤起你的记忆: ...

  5. Cocos2dx坐标转换

    Cocos2dx坐标转换 这段时间加班有点猛,没有太多时间来写博客了,ok,继续完成任务: 前言 这里将会重点介绍四个函数: convertToNodeSpace convertToNodeSpace ...

  6. Cocos2d-x 详解坐标系统

    这篇博文将介绍一下在cocos2dx中的一些坐标系统概念: 一. (1) OpenGL坐标系 Cocos2D-x以OpenGL和OpenGL ES为基础,所以自然支持OpenGL坐标系.该坐标系原点在 ...

  7. cocos2dx中的坐标系统

    一. (1)OpenGL坐标系 Cocos2D-x以OpenGL和OpenGL ES为基础,所以自然支持OpenGL坐标系.该坐标系原点在屏幕左下角,x轴向右,y轴向上. (2)屏幕坐标系 屏幕坐标系 ...

  8. Coordinate System

    Coordinate System Introduction of Different Coordinate Systems Cartesian Coordinate System UI Coordi ...

  9. cocos2dx游戏存储举例及其注意事项

    今天白白跟大家分享一下cocos2dx中游戏的存储及需要注意的事项 cocos2dx中自带了存储类:CCUserDefault ,倘若需要存储的数据量教大的话,建议使用数据库来存储 现在先给大家看一下 ...

随机推荐

  1. HttpActionDescriptor,ASP.NET Web API又一个重要的描述对象

    HttpActionDescriptor,ASP.NET Web API又一个重要的描述对象 通过前面对“HttpController的激活”的介绍我们已经知道了ASP.NET Web API通过Ht ...

  2. MySql主从配置实践及其优势浅谈

    MySql主从配置实践及其优势浅谈 1.增加两个MySQL,我将C:\xampp\mysql下的MYSQL复制了一份,放到D:\Mysql2\Mysql5.1 修改my.ini(linux下应该是my ...

  3. 设置 Ext.data.Store 传参的请求方式

    设置 Ext.data.Store 传参的请求方式 1.extjs 给怎么给panel设背景色 设置bodyStyle:'background:#ffc;padding:10px;', var res ...

  4. CentOS_6.5_x64:VNC安装配置

    1.安装软件前首先检查下系统是否已经安装了这个软件:rpm -qa tigervnc-server 2.根据前面命令的查询,显示系统还是没有安装VNC服务器端软件,那么我们就使用命令进行安装一下:yu ...

  5. 成都传智播客JDBC视频及讲师介绍

    成都传智播客java讲师,也许,你跟他很熟,你或者听过他的课,或者跟他争论过什么,又或者你们在一起共事,再者你们只是偶尔擦肩而过.在小编的印象中郭老师完全没有架子,和他相处会让你觉得不是面对一个老师, ...

  6. C# ASP.net 入门之简单通讯录

    简单通讯录功能虽然简单,却包括了制作一个网站的基本功能!各个模块可以作为新手入门的参考. 简单通讯录实现功能:1.登录 2.注册 3.后台管理 4.前台登录显示 5.创建联系人 6.密码修改 代码下载 ...

  7. [每日一题] OCP1z0-047 :2013-07-15 drop column

    如下实验: gyj@OCM> Create table emp( 2    Empno     number(4)    not null, 3    First_name  varchar2( ...

  8. 关于EL表达式的生效时间(猜想)

    通过ajax与服务端异步交互的时候,在服务端将某些变量或对象设置到request等域里,此时页面上的EL表达式是获取不到ajax异步交互时设置在request等域里的变量或对像的. 我猜测可能EL表达 ...

  9. 维吉尼亚密码java代码实现根据密钥长度计算IC值过程

    package cn.longxuzi; import java.util.Scanner; import org.junit.Test; public class ICUtils { /** * @ ...

  10. [jstips]向数组中插入一个元素

    向现有数组中插入一个元素是经常会见到的一个需求.你可以: 使用push将元素插入到数组的尾部: 使用unshift将元素插入到数组的头部: 使用splice将元素插入到数组的中间: 上面那些方法都是常 ...