Cocos2d-js中的简易MVC框架(五)MVC框架的使用

时间:2022-07-22
本文章向大家介绍Cocos2d-js中的简易MVC框架(五)MVC框架的使用,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

首先定义第一个场景:

<code lang="javascript">
login.LoginScene = game.IScene.extend({
    ctor:function (){
        this._super();
    }
});
</code>
以及该场景的中介者:
<code lang="javascript">
login.LoginSceneMediator = game.SceneMediator.extend({
    ctor:function (view) {
        this._super(view);
    }
});
</code>
然后创建Layer层来显示UI:
<code lang="javascript">
login.LoginLayer = game.IView.extend({
    ctor:function () {
        //TODO 实现显示内容。。。
        return true;
    }
});
</code>
然后创建对应的Mediator:
<code lang="javascript">
login.LoginLayerMediator = game.LayerMediator.extend({
    ctor:function (view) {    
        this._super(view);
    },
    init:function () {
        //注册消息监听
        this.subscrib(common.NotifyType.LOGIN_EVENT, this.btnTouchCallBack, this);
    },
    show:function (parent) {
        //添加UI到场景上
        var self = this;
        self._super(parent);
        parent.addChild(this.currView);
    },
    freshen:function (obj){
        //上层UI关闭时调用
    },
    destroy:function () {
        //删除注册的监听
        this.unsubscrib(common.NotifyType.LOGIN_EVENT, this.btnTouchCallBack);
        //其他销毁都可以放在这里
    }
});
</code>
然后在游戏的最开始调用:
<code lang="javascript">
var loginSceneMediator = new login.LoginSceneMediator(new login.LoginScene());
loginSceneMediator.rootLayer(new login.LoginLayerMediator(new login.LoginLayer()));
game.Frameworks.init({width:1136, height:640}, "DEBUG", loginSceneMediator);
</code>
       创建刚刚实现的场景及Layer,然后传入框架的初始化方法里。

game.Frameworks.init的三个参数分别为:游戏的默认宽高、Log模式、第一个场景。

然后再创建其他场景时就继承IScene来实现就可以了,如果不需要多个场景就继承IView来实现,调用Mediator中的showLayer或者pushLayer来显示就可以了。在这套MVC框架中,Mediator可以注册监听,而View和Model都可以发送send消息来触发Mediator中的注册监听。文章后面附有源码,源码里有小的工程demo。

源码地址:https://github.com/yue19870813/cocos2d-js-mvc.git/