加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

cocos2dx 举例说明 convertToNodeSpace 与 convertToWorldSpace

发布时间:2020-12-14 16:33:07 所属栏目:百科 来源:网络整理
导读:convertToNodeSpace :把世界坐标转换到当前节点的本地坐标系中。 [cpp] view plain copy //可以应用于判断子节点是否被点击,这时就需要把坐标从世界坐标系转换为父节点的坐标系。 //当然大多数情况会用CCMenu,但有时CCMenu就不适用了,比如长按触发响应的

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

[cpp] view plain copy
  1. //可以应用于判断子节点是否被点击,这时就需要把坐标从世界坐标系转换为父节点的坐标系。
  2. //当然大多数情况会用CCMenu,但有时CCMenu就不适用了,比如长按触发响应的时候。
  3. voidHelloWorld::myInit14()
  4. {
  5. CCSizesize=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,321);
  14. }
  15. boolHelloWorld::ccTouchBegan(CCTouch*pTouch,CCEvent*pEvent)
  16. {
  17. beganPoint=pTouch->getLocation();
  18. returntrue;
  19. }
  20. voidHelloWorld::ccTouchEnded(CCTouch*pTouch,CCEvent*pEvent)
  21. {
  22. CCPointendPoint=pTouch->getLocation();
  23. CCSprite*back=(CCSprite*)this->getChildByTag(123);
  24. CCSprite*buttonSP=(CCSprite*)back->getChildByTag(321);
  25. //convertToNodeSpace把世界坐标转换到当前节点的本地坐标系中。
  26. CCPointnodeBeganPoint=back->convertToNodeSpace(beganPoint);
  27. CCPointnodeEndPoint=back->convertToNodeSpace(endPoint);
  28. //判断子节点是否被点击
  29. if(buttonSP->boundingBox().containsPoint(nodeBeganPoint)&&buttonSP->boundingBox().containsPoint(nodeEndPoint)){
  30. CCLog("被点到了");
  31. }
  32. }



convertToWorldSpace:把基于当前节点的本地坐标系下的坐标转换到世界坐标系中。

[cpp] view plain copy
  1. //sp3是sp2的子节点,sp2是sp1的子节点。
  2. voidHelloWorld::myInit13()
  3. {
  4. CCSizesize=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. CCPointworldPoint=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. }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读