cocos2dx 举例说明 convertToNodeSpace 与 convertToWorldSpace 的使用

cocos2dx 举例说明 convertToNodeSpace 与 convertToWorldSpace 的使用,第1张

概述convertToNodeSpace:把世界坐标转换到当前节点的本地坐标系中。 [cpp] view plain copy //可以应用于判断子节点是否被点击,这时就需要把坐标从世界坐标系转换为父节点的坐标系。   //当然大多数情况会用CCMenu,但有时CCMenu就不适用了,比如长按触发响应的时候。   void HelloWorld::myInit14()   {       CCSize convertToNodeSpace:把世界坐标转换到当前节点的本地坐标系中。 [cpp] view plain copy //可以应用于判断子节点是否被点击,这时就需要把坐标从世界坐标系转换为父节点的坐标系。 //当然大多数情况会用Ccmenu,但有时Ccmenu就不适用了,比如长按触发响应的时候。 voIDHelloWorld::myInit14() { CCSizesize=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,321); } boolHelloWorld::cctouchBegan(CCtouch*ptouch,CCEvent*pEvent) { beganPoint=ptouch->getLocation(); returntrue; } voIDHelloWorld::cctouchended(CCtouch*ptouch,CCEvent*pEvent) { CCPointendPoint=ptouch->getLocation(); CCSprite*back=(CCSprite*)this->getChildByTag(123); CCSprite*buttonSP=(CCSprite*)back->getChildByTag(321); //convertToNodeSpace把世界坐标转换到当前节点的本地坐标系中。 CCPointnodeBeganPoint=back->convertToNodeSpace(beganPoint); CCPointnodeEndPoint=back->convertToNodeSpace(endPoint); //判断子节点是否被点击 if(buttonSP->boundingBox().containsPoint(nodeBeganPoint)&&buttonSP->boundingBox().containsPoint(nodeEndPoint)){ cclog("被点到了"); } }

convertToWorldspace:把基于当前节点的本地坐标系下的坐标转换到世界坐标系中。 [cpp] view plain copy //sp3是sp2的子节点,sp2是sp1的子节点。 voIDHelloWorld::myInit13() { CCSizesize=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:把基于当前节点的本地坐标系下的坐标转换到世界坐标系中。 CCPointworldPoint=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 的使用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1071361.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存