Cocos2D-x權威指南:通過節點控制屏幕中的全體渲染對象

    本節,已經可以利用我們目前所學的知識做出一些有趣的東西。之前已經說過,CCNode類沒有貼圖,也就是說在屏幕上單獨建立一個節點是沒有任何效果的,但是可以通過這個“無形”的節點來控制屏幕上的節點。現在就開始吧!
    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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章