cocos2dx 举例说明 convertToNodeSpace 与 convertToWorldSpace 的使用
2014-05-29 14:52
471 查看
感谢点评与关注,欢迎转载与分享。
勤奋努力,持之以恒!
convertToNodeSpace:把世界坐标转换到当前节点的本地坐标系中。
//可以应用于判断子节点是否被点击,这时就需要把坐标从世界坐标系转换为父节点的坐标系。 //当然大多数情况会用CCMenu,但有时CCMenu就不适用了,比如长按触发响应的时候。 void HelloWorld::myInit14() { CCSize size = 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,1,321); } bool HelloWorld::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent) { beganPoint = pTouch->getLocation(); return true; } void HelloWorld::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent) { CCPoint endPoint = pTouch->getLocation(); CCSprite* back = (CCSprite*)this->getChildByTag(123); CCSprite* buttonSP = (CCSprite*)back->getChildByTag(321); //convertToNodeSpace 把世界坐标转换到当前节点的本地坐标系中。 CCPoint nodeBeganPoint = back->convertToNodeSpace(beganPoint); CCPoint nodeEndPoint = back->convertToNodeSpace(endPoint); //判断子节点是否被点击 if (buttonSP->boundingBox().containsPoint(nodeBeganPoint) && buttonSP->boundingBox().containsPoint(nodeEndPoint)) { CCLog("被点到了"); } }
convertToWorldSpace:把基于当前节点的本地坐标系下的坐标转换到世界坐标系中。
//sp3是sp2的子节点,sp2是sp1的子节点。 void HelloWorld::myInit13() { CCSize size = 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:把基于当前节点的本地坐标系下的坐标转换到世界坐标系中。 CCPoint worldPoint = 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 的使用
- convertToNodeSpace 与 convertToWorldSpace 的使用
- cocos2dx convertToNodeSpace和convertToWorldSpace
- cocos2dx 坐标之convertToNodeSpace、convertToWorldSpace、convertToNodeSpaceAR、convertToWorldSpaceAR区别和用法
- 【COCOS2DX-游戏开发之三一】之 坐标系(下) convertToNodeSpace和convertToWorldSpace
- cocos2d-x convertToWorldSpace和convertToNodeSpace
- cocos2dx convertToWorldSpace的用法
- convertToNodeSpace和convertToWorldSpace
- cocos2d-x convertToWorldSpace和convertToNodeSpace
- 坐标系(下) convertToNodeSpace和convertToWorldSpace
- convertToNodeSpace和convertToWorldSpace
- cocos2d-x convertToWorldSpace和convertToNodeSpace
- convertToWorldSpace与convertToNodeSpace
- convertToWorldSpace 参数详解
- 坐标系转换之convertToNodeSpace 与 convertToWorldSpace
- [置顶] [cocos2d-x]从源码角度思考convertToWorldSpace()与convertToWorldSpaceAR()坐标系的转换
- convertToWorldSpace convertToWorldSpaceAR
- convertToWorldSpace用法
- convertToWorldSpace转换为世界坐标系用法