學習cocos2d-x筆記-2

        該怎麼學這個呢?像以前那樣,先字符串,畫圖,聲音,定時器,動畫,精靈等等一步一步的學嗎?覺得這樣缺乏趣味性,於是直接用這個遊戲框架來實現遊戲,第一個想要實現的是中國象棋,因爲它界面相對來說比較簡單,動畫比較少,難度在AI,可用最大最小值法(博弈樹)來實現AI。

      cocos2d-x的大體可分爲,導演(CCDirector),攝影機(CCCamera),場景(CCscene),佈景(CCLayer),角色(CCSprite),動作(CCAtion)。懂得這些概念之後再來看cocos2d-x的代碼將輕鬆很多。就拿中國象棋來說吧,開始有一個場景漸出,一個場景漸入,這是用到裏面的特效,必需兩個不同的scene才能完成。主菜單是個場景,裏面三個菜單,兩個不停切換的背景圖,一個滾動的廣告等等。暫時還沒涉及到動作。

創建一個場景

CCScene* MainMenu::scene(void)
{
CCScene *scene =  CCScene::node();//場景,這個由引擎自動釋放,因爲它調用了autoRelease,如果沒有掉用這個,記得自己調用release方法,下面的佈景也是一樣的

MainMenu *layer =  MainMenu::node();//佈景

scene->addChild(layer,3);//把佈景增加到場景中
return scene;
}


{

       CCSize size = CCDirector::sharedDirector()->getWinSize();//獲取屏幕的寬高,像素級的

        CCSprite * pSprite = CCSprite::spriteWithFile("res/chess/caidanxiaqifang.png");//用這張圖創建成精靈
CCRect r2 = pSprite->getTextureRect();//獲取這張圖的寬高等信息,原始像素的
pSprite->setPosition( ccp(25, size.height-r.size.height*0.6f-r2.size.height*0.6f-12) );//因爲是在320x480上的,所以縮小一下
pSprite->setAnchorPoint(CCPointMake(0,0));//設置錨點,這個就是指這圖像中的那個點代替這一整張圖像,這裏是圖的左下角那個點

pSprite->setScaleX(0.667);//因爲是在320x480上的,所以縮小一下
pSprite->setScaleY(0.6);//因爲是在320x480上的,所以縮小一下
this->addChild(pSprite, 0);//把人物精靈添加到佈景當中

}


{

     CCScene *pScene =  MainMenu::scene();//創建一個場景,裏面有佈景,佈景裏面有人物等


     CCScene *pS = CCTransitionFade::transitionWithDuration(2, pScene,ccc3(0,0,0));//淡入淡出效果
// pScene->release();//因爲這個場景是自動釋放的,所以就不需要的調用這個了

     CCDirector::sharedDirector()->replaceScene(pS);//導演用新的場景代替正在進行的,這個方法原來的會釋放了。

}


由上面的代碼註釋可知:

動作依賴於人物角色,人物角色依賴於佈景,佈景依賴於場景,場景由導演控制,可見層次分明,利於操作,即統一又獨立,比較好維護,思路很清晰。

俺寫的那個框架只實現了場景間的切換,路途還是差非常遠的。

寫個代碼的時候,遇到一個蛋疼的問題是,自己申請的內存,居然引擎幫忙釋放,感覺很彆扭,以前的原則是自己申請的自己釋放。裏面有很多不動的元素,比如背景,也用了CCSprite這個來實現。雖然實現了中國象棋的幾個界面,但是對裏面如何操作的還是一片茫然,繼續努力。因爲中國象棋的AI算法還未實現,在這先不放源碼,等下一篇再給。







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