CocosCreator MVC 구조 상세 설명
이 편 은 게임 클 라 이언 트 에서 자주 사용 하 는 구조 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 구조 에 관 한 자 료 는 저희 의 다른 관련 글 을 주목 해 주 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JSP| 💔MVC 패턴을 이용한 게시판Model(대부분 java): DB에서 추출이나 수정하여 Controller View (대부분 JSP파일): 화면,UI Controller: 요청을 담당 시간이 없을 때, 만드는 게 급선무: 10년전, 요즘 잘 사용...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.