預(yù)制模板的制作-cocosCreator

??最近也才來學(xué)習(xí)的cocosCeator,有很多不懂的地方,歡迎多多交流.??
我用自己學(xué)習(xí)的代碼作為??給大家介紹一下,制作一個(gè)關(guān)卡頁面,并且開始都是鎖的頁面,只有通過了第一關(guān),才能進(jìn)入下一關(guān)

關(guān)卡頁面.png

??我們需要?jiǎng)?chuàng)建兩個(gè)腳本,分別命名為ItemList(用來創(chuàng)建模板)和ItemTemplate(用來對(duì)模板的邏輯處理),接下來拖進(jìn)去一個(gè)button,用來制作模板,模板的默認(rèn)圖片我們?cè)O(shè)置為"有鎖的圖片",并對(duì)兩個(gè)腳本分別初始化處理

//ItemList.js
var Item = cc.Class({
    name: 'Item',
    properties: {
        id: 0,
//這是動(dòng)態(tài)設(shè)置button的背景圖片
        iconSF: cc.SpriteFrame,
//填寫對(duì)應(yīng)關(guān)卡的名字,可以實(shí)現(xiàn)動(dòng)態(tài)跳轉(zhuǎn)
        sceneName: "",
    }
});
cc.Class({
    extends: cc.Component,
    properties: {
        items: {
            default: [],
            type: Item
        },
        itemPrefab: cc.Prefab
    },
    onLoad: function () {
        for (var i = 0; i < this.items.length; ++i) {
            var item = cc.instantiate(this.itemPrefab);
            var data = this.items[i];
            this.node.addChild(item);
            item.getComponent('ItemTemplate').init({
                id: data.id,
                iconSF: data.iconSF,
                sceneName: data.sceneName,
            });
        }
    },
});

在ItemTemplate.js中我們要進(jìn)行初始化以及相應(yīng)的邏輯處理

cc.Class({
    extends: cc.Component,
    properties: {
        id: 0,
        btn: cc.Button,
        sceneName: "",
    },
    init: function (data) {
        this.id = data.id;
        this.sceneName = data.sceneName;
        var level = cc.sys.localStorage.getItem("level");
        if (level !== null){
            if (this.id<= level) {
//設(shè)置只有當(dāng)關(guān)卡闖關(guān)成功了才顯示第幾關(guān)的圖片
               this.btn.normalSprite = data.iconSF;
            }
        }
    },
    // use this for initialization
    onLoad: function () {
    },
    chooseLevel: function(event){
//這是對(duì)得到存儲(chǔ)的關(guān)卡,判斷用戶當(dāng)前關(guān)卡和已經(jīng)闖關(guān)成功的關(guān)卡進(jìn)行比較,如果點(diǎn)擊的是小于成功關(guān)卡數(shù),則可以進(jìn)入,否則點(diǎn)擊無效
        var level = cc.sys.localStorage.getItem("level");
        if (level !== null){
            if (this.id-1 <= level) {
               cc.director.loadScene(this.sceneName);
            }else{
                cc.log("不能進(jìn)入這個(gè)關(guān)卡");
            }
        }else{
            if(this.id === 1){
//這是對(duì)第一次進(jìn)入游戲的用戶來說,直接進(jìn)入第一關(guān),而不是關(guān)卡選擇頁面
                cc.director.loadScene(this.sceneName);
            }
        }
        //console.log("點(diǎn)擊了關(guān)卡"+this.sceneName);
    },
});

??接下來就是腳本的綁定操作了,在button這節(jié)點(diǎn)中綁定對(duì)應(yīng)的ItemTemplate.js,并將ClickEvents下的Handler改成對(duì)應(yīng)的chooseLevel: function(event)方法,對(duì)于該腳本中的"id,ScenceName"等屬性是不需要設(shè)置的,我們是通過動(dòng)態(tài)傳遞來改變的.一切設(shè)置完成后,我們可以把節(jié)點(diǎn)拖到資源管理器中變成prefab了,之后你就可以把節(jié)點(diǎn)從場(chǎng)景中刪除了
??接下來就是動(dòng)態(tài)創(chuàng)建了,在需要?jiǎng)?chuàng)建的節(jié)點(diǎn)上,屬性檢查器中添加ItemList.js,你需要?jiǎng)?chuàng)建多少個(gè)item自己填入就好了,并且拖入關(guān)卡對(duì)應(yīng)的圖片以及關(guān)卡名字(關(guān)卡名稱要和你每個(gè)關(guān)卡場(chǎng)景的名字相同),再把剛才制作好的預(yù)制資源拖進(jìn)對(duì)應(yīng)的Item Prefab就可以了.
??最后你顯示出來的頁面可能還不是自己想要的,你需要添加layout約束,進(jìn)行布局,在content和item分別設(shè)置對(duì)應(yīng)的約束,在這個(gè)scrollView中,view控制的是視圖一開始展示的部分,content的錨點(diǎn),控制item距離上部距離.這些的調(diào)整都需要根據(jù)不同情況進(jìn)行調(diào)整.
以上??

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,124評(píng)論 1 92
  • 22年12月更新:個(gè)人網(wǎng)站關(guān)停,如果仍舊對(duì)舊教程有興趣參考 Github 的markdown內(nèi)容[https://...
    tangyefei閱讀 35,394評(píng)論 22 257
  • 關(guān)于這些技巧這些技巧不可能適用于每個(gè)項(xiàng)目。這些是基于我的一些項(xiàng)目經(jīng)驗(yàn),項(xiàng)目團(tuán)隊(duì)的規(guī)模從3人到20人不等;框架結(jié)構(gòu)的...
    Babybus_Unity閱讀 2,811評(píng)論 2 27
  • RxJava筆記 什么是RxJava 簡(jiǎn)潔的異步 它很長(zhǎng),但很清晰 觀察者模式 原理 Obervable(可觀察者...
    myserendipit閱讀 326評(píng)論 0 2
  • 天下皆知美之為美,惡已;皆知善,斯不善矣。有無之相生也,難易之相成也,長(zhǎng)短之相刑也,高下之相盈也,音聲之相和...
    flh1972831閱讀 1,092評(píng)論 1 1

友情鏈接更多精彩內(nèi)容