专栏首页代码与画家Cocos2d-js中的简易MVC框架(五)MVC框架的使用

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/

本文分享自微信公众号 - 代码与画家(Ituuz_coder),作者:ituuz

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-08-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Cocos2d-js中的简易MVC框架(三)中介者Mediator

    Mediator作为这套MVC框架的核心部分承载了大部分的功能。Mediator主要分三类:DirectorMediator,SceneMediator,Lay...

    用户1428723
  • Cocos2d-js中的简易MVC框架(四)显示层View

    View的功能比较简单,View在MVC结构中负责显示和接收事件。在Cocos2d-JS中Scene和Layer都是View,View只负责显示...

    用户1428723
  • JavaScript原型与继承

    对于使用过基于类的语言 (如 Java 或 C++) 的开发人员来说,JavaScript 有点令人困惑,因为它是动态的,并且本身不提供一个 class 实现。...

    用户1428723
  • EXTJS7 config 自定义配置属性

    路过君
  • 沃尔玛也要发币了,Libra忙活半天为他人做了嫁衣?

    近日,沃尔玛 (Walmart) 已经宣布申请了一项加密货币专利。不出所料,加密货币领域的媒体已经在猜测这家大型零售商的计划和意图。CNN 如是说道:

    区块链大本营
  • 人工智能「 服装设计师 」之 三维重建

    这是论文《 Detailed Garment Recovery from a Single-View Image 》的解读。该论文研究,从照片中提取服装信息,并...

    mixlab
  • 可以拿来吊打面试官的 SQL Join (一)

    之前写过 SQL 的编译原理,很多朋友都不知道 SQL 背后,居然还有编译一说。SQL 用起来和 C#/Java 还是有些异样的。写好 SELECT * (虽然...

    Lenis
  • 使用Playbook管理复杂任务

    YAML的语法和其他高阶语言类似,并且可以简单表达清单、散列表、标量等数据结构。其结构(Structure)通过空格来展示,序列(Sequence)里的项用"-...

    泽阳
  • 深刻理解width:auto

    首先,我们需要清楚width默认值就是auto,所以不用去人为写代码控制其宽度自动哦。

    RobinsonZhang
  • vue计算属性详解——小白速会

    一、什么是计算属性 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护。例如: <div id="exam...

    柴小智

扫码关注云+社区

领取腾讯云代金券