欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

cocos2d游戲選關界面附源碼 - 新聞資訊 - 云南小程序開發(fā)|云南軟件開發(fā)|云南網(wǎng)站建設-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設/小程序開發(fā)/軟件開發(fā)

知識

不管是網(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

相關案例查看更多