本次开发的游戏截图如下。
测试连接如下
http://lufylegend.com/demo/mvcSample/
很多人一定会说,js开发根本不需要什么MVC,用了就是给自己找麻烦。在这里,我不去讨论需不需要的问题,只是我个人感觉这次的开发使用了MVC模式之后,代码各个模块确实一目了然,维护和扩展都相对方便了许多,很适合大中型的开发,当然对于小程序而言,也确实没有使用MVC的必要。现在我将这个框架公开,并在这里简单说明一下它的用法,这个框架是我在很短的时间内完成的,所以一定存在很多不完善的地方,如果你有更好的想法,也欢迎提出来一起讨论。
一,命名
沿用我在lufylegend.js引擎中的命名方式,我给这个框架命名为LMvc,框架已被加入到lufylegend.js的下载包。
二,使用前提
本框架是我在lufylegend.js引擎的基础上完成的,所以使用它的话,你需要引入lufylegend.js引擎。
lufylegend.js引擎官网
http://lufylegend.com/lufylegend
lufylegend.js引擎在线API文档链接
http://lufylegend.com/lufylegend/api
三,特点
动态加载文件,你可能会把所有JS文件写到了一起,但是工程很大的时候,你的JS文件也会很大,会影响页面的显示速度,LMvc不但可以动态加载图片,还可以动态加载JS,一个页面,你每次只需要加载与它相关的文件即可。
四,使用方法
首先配置引擎中各路径LMvc.JS_PATH,LMvc.IMG_PATH,LMvc.MVC_PATH,LMvc.API_PATH,LMvc.SOUND_PATH。
如果需要提前读取一些图片的话,需要将读取完的数据赋值给LMvc.datalist,在后面使用LMvc框架读取图片的时候,会自动对LMvc.datalist进行监测,重复的图片会不再次读取。
最后,调用LMvc.init();就可以进入IndexController了。
每一个***Controller,***Model,***View是一个组,使用之前必须先读取,使用控制器的loadMvc函数,可以读取一组MVC。
一组MVC中可以互调,在控制器Controller中,可以使用 控制器.model 来调用它的模型,使用 控制器.view 来调用它的视图。在模型Model中,可以使用 模型.controller 来调用它的控制器,使用 模型.view 来调用它的视图。在视图View中,可以使用 模型.controller 来调用它的控制器,使用 模型.model 来调用它的模型。
1,控制器Controller
简而言之,一个控制器就是一个类文件。控制器必须放到Controllers文件夹内,控制器的名字以Controller结尾。
在控制器中,可以使用 this.model 来调用它的模型,使用 this.view 来调用它的视图。
控制器中的函数
construct() | 控制器初始化结束后会直接调用此函数,如果有想要在控制器初期化结束后运行的代码,可以写在construct函数内,控制器的construct函数,在模型的construct函数运行之后运行。 |
loadMvc(name,callback,lastClass) | 读取一组MVC,name是控制器的名称中去除Controller的部分;callback是回调函数,当MVC的三个文件读取完之后,会自动调用此函数;lastClass需要设定为当前对象this。 |
loadMvc使用举例:
function IndexController(){ base(this,MyController,[]); } IndexController.prototype.construct=function(){ var self = this; self.loadMvc("Logo",self.logoLoad); }; IndexController.prototype.logoLoad=function(){ var self = this; var logo = new LogoController(); self.view.addChild(logo.view); };
load : 控制器中的load对象用来读取各种文件,使用方法如下
this.load.model(names,callback) | 读取一个或者多个模型。 |
this.load.view(names,callback) | 读取一个或者多个视图。 |
this.load.library(names,callback) | 读取一个或者多个外部类库。 |
this.load.helper(names,callback) | 读取一个或者多个辅助函数文件。 |
this.load.image(loadData,callback) | 读取多张图片。 |
load.model和load.view一般是不用的,但是在一