cocos2d创建带有背景颜色的layer

前端之家收集整理的这篇文章主要介绍了cocos2d创建带有背景颜色的layer前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

这次笔者创建了一个带有背景颜色的layer,同时生成了一个Sprite和一个CCLabelTTf,字体显示在Sprite的中心所在。

代码如下:

GameScene.h

  1. #ifndef __GAMASCENE__H
  2. #define __GAMASCENE__H
  3.  
  4. #include "cocos2d.h"
  5. class CGameScene : public cocos2d::CCLayerColor
  6. {
  7. public:
  8. // Here's a difference. Method 'init' in cocos2d-x returns bool,instead of returning 'id' in cocos2d-iphone
  9. virtual bool init();
  10.  
  11. // there's no 'id' in cpp,so we recommend returning the class instance pointer
  12. static cocos2d::CCScene* scene();
  13.  
  14. // a selector callback
  15. // void menuCloseCallback(CCObject* pSender);
  16.  
  17. // implement the "static node()" method manually
  18. CREATE_FUNC(CGameScene);
  19. };
  20.  
  21. #endif // __HELLOWORLD_SCENE_H__

GameScene.cpp文件内容如下:
  1. #include "GameScene.h"
  2. #include "AppMacros.h"
  3. USING_NS_CC;
  4.  
  5. CCScene* CGameScene::scene() {
  6.  
  7. // 'scene' is an autorelease object
  8. CCScene *scene = CCScene::create();
  9. // 'layer' is an autorelease object
  10. CGameScene *layer = CGameScene::create();
  11.  
  12. //默示获得视口(可视区域)的大小
  13. CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
  14. //表示可视区域的起点坐标,这在处理相对位置的时候非常有用,确保节点在不同分辨率下的位置一致
  15. CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();
  16. //将该层设置为屏幕大小
  17. layer->setContentSize(CCSize(visibleSize.width,visibleSize.height));
  18. //将该层的起点设置为屏幕原点
  19. layer->setPosition(origin.x,origin.y);
  20. // add layer as a child to scene
  21. scene->addChild(layer);
  22. // return the scene
  23. return scene;
  24. }
  25.  
  26. bool CGameScene::init() {
  27. if (!CCLayerColor::initWithColor(ccc4(0xff,0xff,0xff),200,200))
  28. {
  29. return false;
  30. }
  31.  
  32. CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize(); //默示获得视口(可视区域)的大小
  33. CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin(); //表示可视区域的起点坐标,确保节点在不同分辨率下的位置一致
  34.  
  35. for (int i = 0; i < 20; i++) {
  36. CCSprite* pSprite = ::CCSprite::create("qiu1.png");
  37. pSprite->setScale(0.25); // 缩放为原来的1/2
  38. pSprite->setPosition(
  39. ccp(visibleSize.width / 2 + origin.x+i*60,visibleSize.height / 2 + origin.y)); //确保该图在屏幕中心
  40. CCLabelTTF*pLabel = CCLabelTTF::create("4","Arial",TITLE_FONT_SIZE);
  41. CCSize pSize = pSprite->getContentSize();
  42. CCPoint pPoint = pSprite->getPosition();
  43. pLabel->setScale(4);
  44. pLabel->setPosition(ccp(pSize.width / 2,pSize.height / 2)); //如果想要子节点在父节点的中心,则只是需要获得父节点的尺寸,子节点的位置是父节点的中心即可
  45. int a = pSprite->getZOrder();
  46. pLabel->setZOrder(a + 1);
  47. //设置颜色为粉红
  48. pLabel->setColor(ccc3(255,192,203));
  49. pSprite->addChild(pLabel);
  50. this->addChild(pSprite,0);
  51. }
  52.  
  53. return true;
  54. }
  55.  
这样就完成了一个背景层颜色设置。以及两个父子关系的CCNode的相对位置确定

猜你在找的Cocos2d-x相关文章