知識
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!
cocos2d游戲選關界面附源碼
發(fā)表時間:2020-10-19
發(fā)布人:葵宇科技
瀏覽次數(shù):53
1. 選關效不雅圖
[img]http://img.blog.csdn.net/20150104205403555
每頁15個,總共45個,每行5個。這些都可以改。源碼基于Cocos2d 3.3。
2.實現(xiàn)道理
反正有源碼這里就少講點了。我看下cocos2d 的 Menu的實現(xiàn),是一個Layer, 然后瑯綾擎添加很多MenuItem,如不雅用它默認的添加方法,這種幾行幾列的很難搞,所以我們只須要創(chuàng)建一個空的Menu,然后以我們的方法一個一個添加MenuItem即可。
void LevelSelectContent::initAllLevels(int page){ this->removeAllChildren(); const int eachPageItemCount = g_EachPageCount; _levelMenu = Menu::create(); this->addChild(_levelMenu); int const constStartPositionX = VISIBLE_WIDTH * 0.5 - levelMarginX * (g_EachLineCount / 2 - 0.5); int startPositionX = constStartPositionX; int topStartPositionY = VISIBLE_HEIGHT * 0.5 + levelMarginY * (g_EachPageCount / g_EachLineCount / 2 - 0.5); for(int i = 0 + page * eachPageItemCount; i < eachPageItemCount + page * eachPageItemCount; i++){ if(i < g_maxLevel){ int lineCount = g_EachLineCount; if(i!= (0 + page * eachPageItemCount) && i % lineCount == 0){ startPositionX = constStartPositionX; topStartPositionY = topStartPositionY - levelMarginY; } int levelCount = i + 1; auto oneLevelItem = LevelSelectItem::create(levelCount); _levelMenu->addChild(oneLevelItem); oneLevelItem->setPosition(startPositionX, topStartPositionY); startPositionX += levelMarginX; } } _levelMenu->setPosition(0, 0); _levelMenu->setOpacity(0); auto fadeAction = FadeIn::create(0.5); _levelMenu->runAction(fadeAction); }
本質(zhì)就是一個for輪回,添加一個個MenuItem
3.自定義 MenuItemSprite
我們的每一個選關的有3種狀況,已經(jīng)完成的,將要完成的,鎖住的。假設用戶已經(jīng)完成第5關,那么前5關都是完成的,第6關是將要完成的,后面的所有就是鎖住的。
所以這里定義了一個列舉
typedef enum{ kAlreadyPass, kNotPassYet, kLockLevel }LevelItemType;
LevelSelectItem::LevelSelectItem(int level):_level(level),_type(kLockLevel){ if(level > (g_passLevelCount + 1)){ this->setEnabled(false); _type = kLockLevel; }else if(level == (g_passLevelCount + 1)){ this->setEnabled(true); _type = kNotPassYet; }else if(level < (g_passLevelCount + 1)){ this->setEnabled(true); _type = kAlreadyPass; } }
只須要根據(jù)關卡數(shù)就能決定樣子了。cocos2d默認就支撐3個圖片樣式,normal, selected, disabled,如許只須要把后面的關卡menuitem都設置為弗采取即可。
照樣直接看源碼了,不扯了,看源碼比較清楚。
4. 雜談時光
1.作為一個法度榜樣員,小我認為最好不要在選關這種界面浪費時光,滑動方法,點擊方法都可以實現(xiàn),點擊較輕易些,怎么簡單實現(xiàn),就如何實現(xiàn)。
2.這種選關最經(jīng)典的游戲就是末路怒的小鳥了,不過如今你再辛辛苦苦做這種選關游戲,很有可能石沉大年夜海,推薦不要做這種選關游戲,切記!
下面這個游戲就是用了膳綾擎的選關界面,這個游戲是原創(chuàng)的,制造還蠻辛苦的,體驗到了制造原創(chuàng)竽暌刮戲的苦楚和快活,推薦下載玩玩看。將來的游戲我一般會用cocos2d lua了,所以這個可能是最后一個cocos2d c++的示例。
IPhone下載: https://itunes.apple.com/cn/app/findball/id951664460?l=zh&mt=8 安卓下載: http://toycloud.qiniudn.com/FindBall.apk 或者掃描二維碼下載游戲玩。
[img]http://img.blog.csdn.net/20150104211712406 [img]http://img.blog.csdn.net/20150104211718759
4.項目源碼下載
http://www.waitingfy.com/?attachment_id=1472
http://www.waitingfy.com/archives/1476
相關案例查看更多
相關閱讀
- 小程序定制
- 云南做網(wǎng)站
- 政府網(wǎng)站建設服務
- 昆明網(wǎng)站制作
- 網(wǎng)站上首頁
- 小程序模板開發(fā)公司
- 網(wǎng)站建設靠譜公司
- 排名
- 云南網(wǎng)絡公司
- 云南軟件定制
- 電商網(wǎng)站建設
- 小程序開發(fā)課程
- 昆明小程序代建
- 云南小程序開發(fā)報價
- 汽車報廢
- 報廢車拆解回收管理系統(tǒng)
- 區(qū)塊鏈
- 云南衛(wèi)視小程序
- 網(wǎng)站建設快速優(yōu)化
- 網(wǎng)站建設首選公司
- 模版信息
- 云南網(wǎng)站建設公司排名
- 開通微信小程序被騙
- 汽車報廢軟件
- 云南軟件定制公司
- 汽車報廢拆解管理系統(tǒng)
- 汽車拆解系統(tǒng)
- 前端技術
- 云南etc小程序
- 小程序技術