1. 加入節點
新建一個項目,並在HelloWorldScene.cpp文件中的init函數中做如代碼清單3-2的代碼所示的修改。
代碼清單3-2 加入節點
bool HelloWorld::init()
{
if ( !CCLayer::init() )
{
return false;
}
//創建一個節點
CCNode *anode = CCNode::create();
//將節點作爲子節點加入場景類中
this->addChild(anode,0);
CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
"CloseNormal.png",
"CloseSelected.png",
this,
menu_selector(HelloWorld::menuCloseCallback) );
pCloseItem->setPosition( ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20) );
CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
pMenu->setPosition( CCPointZero );
//將菜單作爲子節點加入之前定義的節點中
anode->addChild(pMenu, 1);
CCLabelTTF* pLabel = CCLabelTTF::create("Hello World", "Thonburi", 34);
CCSize size = CCDirector::sharedDirector()->getWinSize();
pLabel->setPosition( ccp(size.width / 2, size.height - 20) );
//將標籤作爲子節點加入之前定義的節點中
anode->addChild(pLabel, 1);
CCSprite* pSprite = CCSprite::create("HelloWorld.png");
pSprite->setPosition( ccp(size.width/2, size.height/2) );
//將背景圖片作爲子節點加入之前定義的節點中
anode->addChild(pSprite, 0);
return true;}
首先通過create函數創建一個節點anode,把anode作爲子節點使用addChild函數加入HelloWorld場景類對象中;然後把本來作爲子節點加入HelloWorld場景類對象中的對象,使用addChild函數作爲子節點加入anode中。這些對象包括菜單類對象、標籤類對象、人物精靈類對象。這些對象的類都是CCNode類的子類。
運行項目,發現和修改前的項目並無區別,如圖3-4所示。
2. 改變位置
修改HelloWorldScene.cpp文件中的init方法,如代碼清單3-3所示。
代碼清單3-3 設置節點位置
//設置節點位置
anode->setPosition(ccp(50,50));
運行效果如圖3-5所示。
可以看到,整體都跟着節點移動了。
3. 設置縮放
下面修改這段代碼如代碼清單3-4所示,看一下縮放的效果。
代碼清單3-4 設置縮放代碼
//設置縮放
anode->setScale(0.5);
運行效果如圖3-6所示。
4. 整體旋轉
最後再來試驗整體旋轉,如代碼清單3-5所示。因爲默認錨點在左下角,因此需要首先移動一下整體的位置,否則整體一轉,屏幕中將只顯示黑屏。注意角度設置爲角度制。
代碼清單3-5 設置旋轉
//設置旋轉
anode->setPosition(ccp(200,200));
anode->setRotation(90.0);
運行效果如圖3-7所示。
本節介紹了屏幕中渲染對象的基礎類CCNode,下一節將介紹控制遊戲顯示的導演類CCDirector。