coco2dx之啓程HelloWorld

學過OC開發的我進行cocosdx雖說有點熟悉,但是還是得一步一個腳印,多敲

在C++函數中每個方法都需要聲明在都文件中,而相對OC來說私有方法可以不需要在頭文件中聲明,調用時編譯器會幫你找到相對應的方法,

所在在一個類中必備的三個函數肯定是

virtual bool init();初始化當前對象
 static cocos2d::CCScene* scene();創建當前的場景

void menuCloseCallback(CCObject* pSender);//聲明的方法  類似想oc中-(void)menuCloseCallback:(NSObject*)pSender;

 CREATE_FUNC(HelloWorld);                     //下面我們進入宏這個方法裏面看看實現了什麼
#define CREATE_FUNC(__TYPE__) \
static __TYPE__* create() \
{ \
    __TYPE__ *pRet = new __TYPE__(); \
    if (pRet && pRet->init()) \                          //先進行判斷對象是否實例化
    { \
        pRet->autorelease(); \                         //如果實例化過就進行發送自動釋放消息 並且返回一個自動釋放的對象
        return pRet; \
    } \
    else \                                                       //否者就滯空該對象,並且跳出該方法
    { \
        delete pRet; \
        pRet = NULL; \
        return NULL; \
    } \
}

下面我們在init()函數中創建一個讓界面展示的的HelloWorld字體
CCLabelTTF* pLabel = CCLabelTTF::create("Hello World", "SnellRoundhand-Bold", 40);

    pLabel->setPosition( ccp(size.width / 2, size.height - 50) );

    this->addChild(pLabel, 1);                     //這裏有兩個參數 第一個參數估計大家都知道是幹什麼的吧  重點是第二個  他是說明你需要將該對象放在當前視圖的第幾層 0爲最底層。。。。

CCSprite* pSprite = CCSprite::create("HelloWorld.png",CCRect(0, 0, 480, 320));//精靈類 放上了一張HelloWorld.png的圖片作爲背景

    pSprite->setScale(2);                           //設置大小比例2倍

    
    pSprite->setPosition( ccp(size.width/2, size.height/2) );


    this->addChild(pSprite, 0);                 //將該對象放在當前視圖的第0爲最底層

    //菜單類
CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
                                        "CloseNormal.png",
                                        "CloseSelected.png",
                                        this,
                                        menu_selector(HelloWorld::menuCloseCallback) );//圖片菜單項
//參數1 normal狀態下的圖片 2.點擊後的圖片 3.響應對象設置爲當前 4.響應方法(必須爲頭文件聲明的方法)

    pCloseItem->setPosition( ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20) );

    CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);-------注意這裏菜單項都歸menu管理-------------

    pMenu->setPosition( CCPointZero );
    
    this->addChild(pMenu, 1);
    
    CCMenuItemLabel *labelItem=CCMenuItemLabel::create(CCLabelTTF::create("Menu", "SnellRoundhand-Bold", 40),this,menu_selector(HelloWorld::onMenuAction));//label菜單項
//參數1 一個label對象 2.相應對象設置爲當前 3.響應方法(必須爲頭文件聲明的方法)
    
    CCSize size = CCDirector::sharedDirector()->getWinSize();

  labelItem->setPosition(ccp(80, size.height-80));

    CCMenu *menu=CCMenu::create(labelItem,NULL);-------注意這裏猛惡菜單項都歸menu管理-------------
     
    menu->setPosition(CCPointZero);//通常這裏menu的postion都設置CCPointZero
    
    this->addChild(menu,1);
 其實上面兩項可以結合在一起
CCMenu *menu=CCMenu::create(labelItem,pCloseItem ,NULL);


結果就是:


 

發佈了28 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章