CocosCreator MVC 구조 상세 설명

4023 단어 CocosMVC짜임새
개술
이 편 은 게임 클 라 이언 트 에서 자주 사용 하 는 구조 MVC 구 조 를 소개 할 것 이다.한 게임 의 MVC 는 다음 과 같이 구분 합 니 다.
M:1)단일 사례 의 전체적인 데이터 센터 World,모든 게임 모듈 의 데 이 터 는 World 에 입구 가 있 고 2)각 모듈 의 데이터 구조 가 있다.
V:1)creator 프 리 캐 스 트 를 통 해 제 작 된 UI 인터페이스,장면,2)각 인터페이스 에 논리 적 인 ViewCtrl 표시
C:1)전역 의 MainCtrl,2)각 모듈 의 비 즈 니스 논리 클래스 ModuleCtrl
구체 모듈
M 부분 부터 소개 하 겠 습 니 다.한 모듈 의 데이터 로 인해 다른 모듈 에 도 접근 할 필요 가 있 습 니 다.예 를 들 어 친구 모듈 은 채 팅 을 할 때 도 방문 해 야 하고 차 트 에서 방문 해 야 합 니 다.데 이 터 는 하나의 전체 데이터 센터 클래스 World 가 있어 야 합 니 다.모든 게임 모듈 의 데이터 클래스 는 World 에 입구 가 있 습 니 다.이 데 이 터 는 유저 가 로그 인 한 후 서버 에서 가 져 와 설정 할 수 있 습 니 다.

export class World {
    private static instance: World = null;
 
    private _test: TestData = null;
 
    /**
     *     
     */
    private constructor() {
 
    }
 
    /**
     *     
     */
    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;
    }
}
이 모듈 간 에 독립 적 으로 자신의 데이터 구 조 를 설계 할 수 있 으 며,메 시 지 를 보 내 모듈 의 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;
    }
}
데이터 의 갱신 시 메 시 지 를 보 낼 수 있 고 인터페이스 에서 메 시 지 를 감청 하여 갱신 할 수 있다.
인터페이스 와 스 크 립 트 코드 의 연결 을 소개 합 니 다.앞에서 소개 한 바 와 같이 cocos creator 는 구성 요소 모드 를 기반 으로 한다.나 는 모든 ui 인터페이스 를 하나의 예제 체 로 만 들 었 다.모든 예제 체 는 스 크 립 트 구성 요 소 를 추가 하여 이 인터페이스의 디 스 플레이 논 리 를 제어 할 수 있다.


팝 업 창 관리 에서 제 가 계승 cc.Component 의 종 류 를 ViewCtrl 이 라 고 설 계 했 습 니 다.모든 인터페이스의 디 스 플레이 논리 류 는 ViewCtrl 을 계승 하고 해당 하 는 인터페이스 예제 체 에 추 가 했 습 니 다.앞에서 언급 한 데이터 업데이트 시 메 시 지 를 보 냅 니 다.ViewCtrl 은 데이터 업데이트 메 시 지 를 감청 하고 관련 인터페이스 를 새로 고 칩 니 다.

const {ccclass, property} = cc._decorator;
 
@ccclass
export default class TestViewCtrl extends ViewCtrl {
}
ViewCtrl 은 인터페이스의 디 스 플레이 논리 만 처리 하고 데이터 업무 논 리 는 처리 하지 않 으 며 모듈 의 데이터 업무 논 리 는 이 모듈 의 ModuleCtrl 에서 처리 합 니 다.ViewCtrl 은 사용자 작업 에 응답 하고 메 시 지 를 보 내 며 ModuleCtrl 감청 메 시 지 를 처리 합 니 다.대부분의 모듈 의 ModuleCtrl 은 주로 네트워크 통신 을 하고 이 모듈 의 캐 시 데 이 터 를 수정 합 니 다.

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 층 에는 전역 적 으로 하나의 MainCtrl 이 있다.이 종 류 는 주로 모듈 등록,전체적인 조작 인터페이스(예 를 들 어 인터페이스/장면 의 현 은),네트워크 통신 처 리 를 책임 집 니 다.
이상 은 바로 CocosCreator MVC 구조 에 대한 상세 한 내용 입 니 다.CocosCreator MVC 구조 에 관 한 자 료 는 저희 의 다른 관련 글 을 주목 해 주 십시오!

좋은 웹페이지 즐겨찾기