cocos2d x IOS遊戲開發

2021-12-29 22:41:41 字數 2482 閱讀 6741

捕魚達回顧

【cocos2d-x ios遊戲開發-捕魚達人1】內容介紹

上節回顧

【cocos2d-x ios遊戲開發-城市跑酷3】讀取資源,設定背景層

遊戲的元素應該是多種多樣的,只有乙個背景就略顯單調了,這裡我們來加入一些道具。

來看下具體的實現:

//加入背景:城市燈火

_background = ccsprite::createwithspriteframename(background.png);

_background->setanchorpoint(ccp(0,0));

_gamebatchnode->addchild(_background, kbackground);新增路燈://設定路燈

_foreground = ccsprite::createwithspriteframename(lamp.png);

_foreground->setanchorpoint(ccp(0,0));

_gamebatchnode->addchild(_foreground, kforeground);新增雲朵:用陣列ccarray 存雲朵,並設定雲朵的位置。

ccarray 是cocos2dx中充分支援的類。它被用來優化遊戲。你可以在cocos2d/support中找到這個類。

它和蘋果的nsmutablearr類相似,但是ccarray的表現力更好一些。

注意:ccarray和ccdictionary類被用來儲存cocox2dx的類,然而他們並沒有和stl一樣強大。因此,沒有必要使用ccarray或者ccdictionary來替代你的專案中的一些stl。

ccarray僅僅提供物件包裝類的功能

ccarray繼承自ccobject類(ccobject的主要目的是自動的**記憶體),並且提供一系列介面。

注意點一:

ccarray中有乙個remove方法和乙個fastremove方法,看一下源**可知,remove是乙個完全的移除操作,而faseremove僅僅將當前元素release了,主要的區別點在於向前移動了這個元素之後的元素之後,沒有顯式的刪除元素。**如下:

unsigned int remaining = arr->num - index;

if(remaining>0)

faseremoveobject是快速的,但是它也意味著在ccarray中的物件將會改變位置,那麼如果你使用ccarray的排序資訊,你不應該使用faseremoveobject方法。

注意點二:

ccarray初始它的引用計數為1,並且被設定為了autorelease。因此建立ccarray的時候你需要去retain,並且在析構函式中你需要手動的release記憶體。否則使用過程中可能ccarray已經釋放造成錯誤。

現在看一下具體的使用方法:

//加入精靈雲

ccsprite * cloud;

_clouds = ccarray::createwithcapacity(4);

_clouds->retain();

float cloud_y;

for (int i = 0; i < 4; i++) 加入一組競技團隊://加入乙個競技團隊

_jam = ccsprite::createwithspriteframename(jam_1.png);

ccanimation* animation;

animation = ccanimation::create();

//ccspriteframe對應的就是幀,將ccspriteframe新增到ccanimation生成動畫資料,

//用ccanimation生成ccanimate(就是最終的動畫動作),最後可以用ccsprite執行這個動作。

ccspriteframe * frame;

int i;

for(i = 1; i <= 3; i++) ;

sprintf(szname, jam_%i.png, i);

frame = ccspriteframecache::sharedspriteframecache()->spriteframebyname(szname);

animation->addspriteframe(frame);

}//設定每兩幀間時間間隔

animation->setdelayperunit(0.2f / 3.0f);

//設定動畫結束後是否保留動畫幀資訊

animation->setrestoreoriginalframe(false);

//設定迴圈**次數 (-1:無限迴圈)

animation->setloops(-1);

//由這個動畫資訊建立乙個序列幀動畫

_jamanimate = ccanimate::create(animation);

//儲存這個動畫

_jamanimate->retain();

_gamebatchnode->addchild(_jam, kbackground);

cocos2d x IOS遊戲開發

捕魚達回顧 cocos2d x ios遊戲開發 捕魚達人1 內容介紹 上節回顧 cocos2d x ios遊戲開發 城市跑酷14 重寫觸屏 touch 事件處理機制,響應玩家操作 cclabelbmfont的特色就是以占用更多記憶體為代價加快標籤的更新,這與其他任何ccsprite類相似 在遊戲中使...

cocos2d x ios遊戲開發初認識 一

用xcode新建工程,我用版本是xcode5開始執行會出現兩個錯誤,首先進行改錯。錯誤 clang error unknown argument websockets wunused command line argument hard error in future 只需將other link中 ...

cocos2dx IOS微信分享

c2dshareinstance.h c2dshareinstance.mm mm是用於c 與ios混編 是用於cocos2dx 與 ios 進行互動的,內部實現如下 ifndef c2dshareinstance h define c2dshareinstance h include cocos2...