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. DateDiff函数

    在MySQL中可以使用DATEDIFF()函数计算两个日期之间的天数 语法: datediff(date1,date2) 注:date1和date2需是合法的日期或日期/时间表达式 例1 SELECT ...

  2. java文件上传--基于ajaxFileUpload+struts2

    jQuery插件ajaxFileUpload可以实现ajax文件上传,使用非常简单. 下面做一个简单的demo(以上传图片为例),实现图片上传,图片显示,图片下载 注:以下的代码是在项目的基础上进行开 ...

  3. C#中易混淆的知识点

    C#中易混淆的知识点 一.引言 今天在论坛中看到一位朋友提出这样的一个问题,问题大致(问题的链接为:http://social.msdn.microsoft.com/Forums/zh-CN/52e6 ...

  4. 分享自制的C#和VB Code互转工具

    分享自制的C#和VB Code互转工具 作为.NET程序员,往往习惯使用一种语言(据我观察,2006年后的程序员习惯用C#,之前的喜欢VB).而对于另一种语言虽然能读懂但是写起来总是比较费事.尤其面对 ...

  5. tastypie Django REST framework API [Hello JSON]

    tastypie is a good thing. Haven't test it thoroughly. Gonna need some provement. Now I will introduc ...

  6. 【IUML】回归和梯度下降

    回归(Regression) 在数学上来说是给定一个点集,能够用一条曲线去拟合之,如果这个曲线是一条直线,那就被称为线性回归,如果曲线是一条二次曲线,就被称为二次回归,回归还有很多的变种,如local ...

  7. CentOS 设置 pptpd VPN 步骤

    安装CentOS6.3系统参见: <CentOS 6.3安装(详细图解教程)> 安装服务: 1.安装 ADSL PPPOE #yum -y install rp-pppoe 详细设置介绍看 ...

  8. django form表单验证

    一. django form表单验证引入 有时时候我们需要使用get,post,put等方式在前台HTML页面提交一些数据到后台处理例 ; <!DOCTYPE html> <html ...

  9. 仿Iconfont-阿里巴巴矢量图标库 搜索动画

    效果图如下 style <Style x:Key="BtnSearch" TargetType="{x:Type Button}"> <Set ...

  10. qdoc 简介

    Qdoc 介绍 Qdoc是开发者用于在软件工程中生成文档的一个工具.它从工程的源文件中提取qdoc类型注释,并以html页面或者DITA XML文档的形式格式化到文件中.Qdoc在.cpp和.qdoc ...