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/
- Rokid祝明铭:大腿我们不抱,人机交互产品形态未定 | 变局者
- 腾讯AI让二子,柯洁还是输了
- AI创业者的“英雄联盟”,腾讯AI加速器二期项目招募开启
- PyTorch发布一周年:盘点社区和工程大事件,后来者居上态势已显?
- 2018年AI如何发展?普华永道做出了8点预测 | 报告下载
- 不正之风!机器学习论文里都有哪四大投机取巧的写作手法?
- 前端写一个月的原生 Android 是怎样一种体验?
- 给人挖矿还不自知 电脑已变黑客肉鸡
- 反序列化漏洞屡被黑客利用,危害巨大,代码怎样写才安全?
- Mifa 主题微信编辑器
- Mifa GitHub Pages 主题
- Mifa Design:一个服务于 Markdown 的设计体系
- 未来机器人大脑将获取互联网知识自我学习
- 【架构拾集】: Android 移动应用架构设计
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 如何在YouTube Api限额的情况下获取更多视频
- RNA-Seq数据用aspera高效批量下载(万事开头难)
- 并发编程之Atomic&Unsafe魔法类详解
- 重温Retrofit源码,笑看协程实现
- 【java设计模式系列】3. 抽象工厂模式(Abstract Factory)
- 解决jar包冲突的简单办法
- 【Java8新特性】01 函数式接口和Lambda表达式你真的会了吗
- 只出现一次的元素
- 【排序】堆排序
- redis灵魂拷问:怎样搭建一个哨兵主从集群
- 是时候给你的鼠标指针更换样式换下风格体验了!如何卸载与安装鼠标指针?
- Linux设置虚拟内存
- SSM 单体框架 - 教育平台后台管理系统:接口文档
- java学习应用篇|使用环境变量做一些工具
- 【Java8新特性】06 新的日期和时间:LocalDate LocalTime LocalDateTime