1. 程式人生 > >CocosCreator之KUOKUO帶你理解2代引擎的微信主域子域及排行榜模版連結

CocosCreator之KUOKUO帶你理解2代引擎的微信主域子域及排行榜模版連結

本次引擎2.0.5

編輯工具VSCode

目標:理解2代引擎的微信主域子域及排行榜模版

首先我們要明白為什麼需要主域跟子域(微信的原因)

一代引擎需要用程式碼把子域紋理重新整理到主域。

官方在二代引擎推出了一個好東西:

什麼呢?我們往下看。

官方二代案例下載

這裡我使用了官方案例進行講解,一些地方進行了補充:

我們先開啟主域的工程。

好,正如我們看到的,這是一個使用者介面。

左上角的是一個普通的展示使用者資訊的一個預製資源。

還有個按鈕:

還有display

display這個節點就是子域顯示區域。

要有精靈元件,因為子域的圖形會形成紋理載入在display上。

重點來了!!!

重點來了!!!

重點來了!!!

二代引擎推出了一個元件,一個專門為子域而準備的元件。

(WXSubContextView)

這個元件就是為了精簡程式碼。

我們看一下程式碼怎麼寫的:

首先在屬性中聲明瞭display節點用於顯示子域;

label標籤用於顯示微信使用者名稱稱;

userBlock是那個預製資源的根節點;(子節點包括使用者頭像,名稱)

第一部分:子域的顯示與隱藏:

start()函式中,聲明瞭一個標誌,兩個動作。就是為了把display節點放到螢幕外,實現隱藏。

第二部分:獲取裝置寬度高度:

使用了微信的API。微信的API中有一部分是可以在主域中使用的。

為什麼要獲取呢??

為了建立一個授權按鈕。(玩微信小遊戲時會先彈出授權視窗)

有一種做法是把按鈕大小設定為全屏,顏色透明。

然後使用者第一次點選肯定會點到。(先判斷一下是否授權過,授權過就可以把按鈕隱藏掉了)

這是我的補充:

start(){
        // 獲取授權狀態
        wx.getSetting({
            success(res) {
                // 如果沒授權
                if (!res.authSetting['scope.userInfo'])
                {
                    let systemInfo =  wx.getSystemInfoSync();//裝置資訊
                    let width = systemInfo.windowWidth;//可用視窗寬度
                    let height = systemInfo.windowHeight;
                    let button = wx.createUserInfoButton({
                        type: 'text',
                        text: ' ',
                        style: {
                        left: width * 0,
                        top: height * 0,
                        width: width * 1.0,
                        height: height * 1.0,
                        lineHeight: 40,
                        backgroundColor: '#00000000',
                        color: '#ffffff',
                        textAlign: 'center',
                        fontSize: 10,
                        borderRadius: 3
                        }
                    });
//、、、、、、、、、、、、、、、、

好了,我們往下看:

button.onTap()是指按鈕點下去之後做什麼。

底下的wx.getOpenDataContext().postMessage()是發射至子域資訊。

好了,我們再看一下底下的三個方法:

這是用於display節點的隱藏與顯示:

這是把獲取到的資訊放在圖片上和label上。

cc.loader載入紋理,然後形成spriteFrame。

這是錯誤資訊提示:

 

誒?

誒?

誒?

關於子域紋理重新整理的程式碼呢?

哈哈,不需要!

綁上元件,不需要你寫相關程式碼。

接下來說一下手動更新貼圖(開關):

直接給程式碼(我工程的,有兩個遊戲模式)

前兩個點選是進入兩個不同的遊戲模式,進入時把元件關了。

然後第三個的start是在載入時開啟。

測試幀率提高26左右。

 嗯,主域的先到這。

console.log(滑稽)

我們看看子域:

畫布的比例要與主域的display相同(對應比例就可以)

 滾動檢視記得把邊緣留個2畫素。

我們看程式碼:

這就是接受主域訊息的方法。

進行補充:

這是我的工程程式碼:

通過主域給的data來實現子域場景的切換。

怎麼樣,是不是懂了。

關於模組剔除,請查閱官方文件手冊。

還沒太懂怎麼辦?模版呢?

點選這裡:

開源微信小遊戲排行榜連結

(感謝追風大神的分享)

加我QQ群:(部落格裡面的專案,群檔案裡都有哦)

706176551

我們一起學習!

O(∩_∩)O~~