欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解CocosCreator MVC架構(gòu)

 更新時(shí)間:2021年04月15日 15:50:43   作者:houjia159  
這篇文章主要介紹了CocosCreator MVC架構(gòu),同學(xué)們在制作游戲過程中,盡量使用一些架構(gòu),會(huì)避免很多問題

概述

這一篇將介紹在游戲客戶端常用的架構(gòu)MVC架構(gòu)。一個(gè)游戲的MVC如下劃分:

M:1)單例全局的數(shù)據(jù)中心World,所有游戲模塊的數(shù)據(jù)在World中有入口,2)各個(gè)模塊自己的數(shù)據(jù)結(jié)構(gòu)。

V:1)通過creator預(yù)制體制作的UI界面、場景,2)各個(gè)界面顯示邏輯的ViewCtrl

C:1)全局的MainCtrl,2)各個(gè)模塊的業(yè)務(wù)邏輯類ModuleCtrl

具體模塊

先介紹M部分。由于一個(gè)模塊的數(shù)據(jù),在其他模塊也有訪問的需求,例如好友模塊,在聊天的時(shí)候也需要訪問,在排行榜里需要訪問。數(shù)據(jù)應(yīng)該有一個(gè)單例全局的數(shù)據(jù)中心類World,所有游戲模塊的數(shù)據(jù)類在World中有入口。這些數(shù)據(jù)可以在玩家登錄后從服務(wù)器獲取并設(shè)置。

export class World {
    private static instance: World = null;
 
    private _test: TestData = null;
 
    /**
     * 單例模式
     */
    private constructor() {
 
    }
 
    /**
     * 獲取實(shí)例
     */
    public static get inst(): World {
        if (!World.instance) {
            World.instance = new World();
        }
 
        return World.instance;
    }
 
    // FOR TEST
    public set test(val: TestData) {
        this._test = val;
    }
 
    public get test(): TestData {
        return this._test;
    }
}

這樣模塊間可以獨(dú)立設(shè)計(jì)自己的數(shù)據(jù)結(jié)構(gòu),通過發(fā)送消息請求對應(yīng)模塊的ModuleCtrl更改,通過World讀取。

export class TestData {
    private _text: string = null;
 
    public constructor() {
 
    }
 
    public set text(val: string) {
        this._text = val;
    }
 
    public get text(): string {
        return this._text;
    }
}

數(shù)據(jù)的更新時(shí)可以派發(fā)消息,界面可以監(jiān)聽消息做刷新。

下面介紹界面和腳本代碼的關(guān)聯(lián)。前面篇章中介紹過,cocos creator是基于組件模式。我將每個(gè)ui界面都做成一個(gè)預(yù)制體,每個(gè)預(yù)制體都可以添加一個(gè)腳本組件,用于控制這個(gè)界面的顯示邏輯。

在彈窗管理里提到我設(shè)計(jì)了一個(gè)繼承cc.Component的類叫ViewCtrl,所有界面的顯示邏輯類都繼承ViewCtrl,并添加到對應(yīng)的界面預(yù)制體。前面提到數(shù)據(jù)更新時(shí)會(huì)派發(fā)消息,ViewCtrl監(jiān)聽數(shù)據(jù)更新消息,刷新關(guān)聯(lián)的界面。

const {ccclass, property} = cc._decorator;
 
@ccclass
export default class TestViewCtrl extends ViewCtrl {
}

ViewCtrl只處理界面的顯示邏輯,不處理數(shù)據(jù)業(yè)務(wù)邏輯,模塊的數(shù)據(jù)業(yè)務(wù)邏輯由該模塊的ModuleCtrl處理。ViewCtrl響應(yīng)用戶操作,派發(fā)消息,ModuleCtrl監(jiān)聽消息處理。大部分模塊的ModuleCtrl主要做網(wǎng)絡(luò)通信,和對本模塊緩存數(shù)據(jù)的修改。

export class TestCtrl {
 
    public constructor() {
 
    }
 
    public init(): void {}
 
    public start(): void {
        NotifyCenter.addListener(MSG_TEST_HTTP, (src: any, data: any) => {
            this.testHttp();
        }, this);
    }
 
    public testHttp(): void {
        let data = {
            mod: 1, // 模塊
            cmd: 1, // 命令
        }
 
        let params: HttpReq = {
            path: "",
            method: HTTP_METHOD_GET
        }
 
        MainCtrl.inst.http.sendData(data, params, (data: NetData) => {
            World.inst.test = new TestData();
            World.inst.test.text = "123";
        }, (code: number, reason: string) => {});
    }
}

前面提到,C層還有一個(gè)全局單例的MainCtrl。該類主要負(fù)責(zé)模塊注冊、提供全局的操作接口(例如界面/場景的顯隱)、網(wǎng)絡(luò)通信處理。

以上就是詳解CocosCreator MVC架構(gòu)的詳細(xì)內(nèi)容,更多關(guān)于CocosCreator MVC架構(gòu)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • JavaScript高級程序設(shè)計(jì) 閱讀筆記(十四) js繼承機(jī)制的實(shí)現(xiàn)

    JavaScript高級程序設(shè)計(jì) 閱讀筆記(十四) js繼承機(jī)制的實(shí)現(xiàn)

    繼承是面向?qū)ο笳Z言的必備特征,即一個(gè)類能夠重用另一個(gè)類的方法和屬性。在JavaScript中繼承方式的實(shí)現(xiàn)方式主要有以下五種:對象冒充、call()、apply()、原型鏈、混合方式
    2012-08-08
  • 在JavaScript里嵌入大量字符串常量的實(shí)現(xiàn)方法

    在JavaScript里嵌入大量字符串常量的實(shí)現(xiàn)方法

    在JavaScript文件里嵌入大量字符串常量是經(jīng)常遇到的事。有時(shí)為了省事,就把一些界面的HTML和CSS直接寫在JS文件里
    2013-07-07
  • 一段效率很高的for循環(huán)語句使用方法

    一段效率很高的for循環(huán)語句使用方法

    一段效率很高的for循環(huán)語句使用方法...
    2007-08-08
  • 微信小程序?qū)崿F(xiàn)購物車功能

    微信小程序?qū)崿F(xiàn)購物車功能

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)購物車功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • JavaScript代碼判斷點(diǎn)擊第幾個(gè)按鈕

    JavaScript代碼判斷點(diǎn)擊第幾個(gè)按鈕

    javascript點(diǎn)擊按鈕需求,在項(xiàng)目開發(fā)過程中經(jīng)常遇到,本文通過一段代碼給大家分享javascript代碼判斷點(diǎn)擊第幾個(gè)按鈕,對本文感興趣的朋友一起學(xué)習(xí)吧
    2015-12-12
  • TypeScript中的函數(shù)

    TypeScript中的函數(shù)

    這篇文章主要介紹了TypeScript中的函數(shù),一般JavaScript中的函數(shù)定義常用的有使用function關(guān)鍵字聲明函數(shù)、使用字面量方式聲明函數(shù)、使用箭頭函數(shù)聲明函數(shù)等幾種函數(shù),下面我們大家就一起進(jìn)入文章了解這些函數(shù)的具體定義吧,需要的朋友可以參考一下
    2021-12-12
  • Bootstrap基本插件學(xué)習(xí)筆記之Alert警告框(20)

    Bootstrap基本插件學(xué)習(xí)筆記之Alert警告框(20)

    這篇文章主要為大家詳細(xì)介紹了Bootstrap基本插件學(xué)習(xí)筆記之ALert警告框的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • JavaScript對象數(shù)組排序?qū)嵗椒\析

    JavaScript對象數(shù)組排序?qū)嵗椒\析

    這篇文章主要介紹了JavaScript對象數(shù)組排序?qū)嵗椒\析的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧
    2016-06-06
  • 多種方式實(shí)現(xiàn)js圖片預(yù)覽

    多種方式實(shí)現(xiàn)js圖片預(yù)覽

    這篇文章主要為大家詳細(xì)介紹了多種方式實(shí)現(xiàn)js圖片預(yù)覽,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • JavaScript改變CSS樣式的方法匯總

    JavaScript改變CSS樣式的方法匯總

    JavaScript修改CSS有4種方法:1.修改節(jié)點(diǎn)style(內(nèi)聯(lián)樣式);2.改變節(jié)點(diǎn)class或id;3.寫入新的css;4.替換頁面中的樣式表。今天主要給大家介紹下前2種,因?yàn)楹髢煞N個(gè)人不是很推薦大家使用
    2015-05-05

最新評論