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. 对 Linux 新手有用的 20 个命令

    你打算从Windows换到Linux上来,还是你刚好换到Linux上来?哎哟!!!我说什么呢,是什么原因你就出现在我的世界里了.从我以往的经验来说,当我刚使用Linux,命令,终端啊什么的,吓了我一跳 ...

  2. springMVC3学习(八)--全局的异常处理

    在springMVC的配置文件中: <bean id="exceptionResolver" class="org.springframework.web.serv ...

  3. JavaEE:response响应和request请求

    Web服务器接收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象.request和response对象既然代表请求和响应,那么我 ...

  4. HC - 05 bluetooth module settings in Linux using CuteCom

    By default the bluetooth module HC-05 sets baud rate at 38400, data bits 8, Stop bits 1 All schemati ...

  5. How to make workflow chart using several tools in Linux?

    Just as what I said, I usually use yED to make workflow chart and markdown as the language to write ...

  6. javascript ajax 脚本跨域调用全解析

    javascript ajax 脚本跨域调用全解析 今天终于有点时间研究了一下javsscript ajax 脚本跨域调用的问题,先在网上随便搜了一下找到一些解决的办法,但是都比较复杂.由是转到jqu ...

  7. magento 小问题解决方案集

    magento错误 Mage registry key "_singleton/core/resource" already exists解决方法:1.清理magento的var/ ...

  8. java对数据库的操作

    package com.DateSystem; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLEx ...

  9. Debian下的'aptitude update'失败处理

    Hit http://ftp.us.debian.org squeeze/contrib amd64 Packages Hit http://download.proxmox.com squeeze/ ...

  10. Android 检测是否连接蓝牙耳机

    前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处:          CSDN:http://www.csdn.net        ...