这次笔者创建了一个带有背景颜色的layer,同时生成了一个Sprite和一个CCLabelTTf,字体显示在Sprite的中心所在。
代码如下:
GameScene.h
#ifndef __GAMASCENE__H
#define __GAMASCENE__H
#include "cocos2d.h"
class CGameScene : public cocos2d::CCLayerColor
{
public:
// Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
virtual bool init();
// there's no 'id' in cpp, so we recommend returning the class instance pointer
static cocos2d::CCScene* scene();
// a selector callback
// void menuCloseCallback(CCObject* pSender);
// implement the "static node()" method manually
CREATE_FUNC(CGameScene);
};
#endif // __HELLOWORLD_SCENE_H__
GameScene.cpp文件内容如下:
#include "GameScene.h"
#include "AppMacros.h"
USING_NS_CC;
CCScene* CGameScene::scene() {
// 'scene' is an autorelease object
CCScene *scene = CCScene::create();
// 'layer' is an autorelease object
CGameScene *layer = CGameScene::create();
//默示获得视口(可视区域)的大小
CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
//表示可视区域的起点坐标,这在处理相对位置的时候非常有用,确保节点在不同分辨率下的位置一致
CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();
//将该层设置为屏幕大小
layer->setContentSize(CCSize(visibleSize.width,visibleSize.height));
//将该层的起点设置为屏幕原点
layer->setPosition(origin.x,origin.y);
// add layer as a child to scene
scene->addChild(layer);
// return the scene
return scene;
}
bool CGameScene::init() {
if (!CCLayerColor::initWithColor(ccc4(0xff, 0xff, 0xff, 0xff), 200, 200))
{
return false;
}
CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize(); //默示获得视口(可视区域)的大小
CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin(); //表示可视区域的起点坐标,这在处理相对位置的时候非常有用,确保节点在不同分辨率下的位置一致
for (int i = 0; i < 20; i++) {
CCSprite* pSprite = ::CCSprite::create("qiu1.png");
pSprite->setScale(0.25); // 缩放为原来的1/2
pSprite->setPosition(
ccp(visibleSize.width / 2 + origin.x+i*60,
visibleSize.height / 2 + origin.y)); //确保该图在屏幕中心
CCLabelTTF*pLabel = CCLabelTTF::create("4", "Arial", TITLE_FONT_SIZE);
CCSize pSize = pSprite->getContentSize();
CCPoint pPoint = pSprite->getPosition();
pLabel->setScale(4);
pLabel->setPosition(ccp(pSize.width / 2, pSize.height / 2)); //如果想要子节点在父节点的中心,则只是需要获得父节点的尺寸,子节点的位置是父节点的中心即可
int a = pSprite->getZOrder();
pLabel->setZOrder(a + 1);
//设置颜色为粉红
pLabel->setColor(ccc3(255,192,203));
pSprite->addChild(pLabel);
this->addChild(pSprite, 0);
}
return true;
}
这样就完成了一个背景层颜色设置。以及两个父子关系的CCNode的相对位置确定