大佬教程收集整理的这篇文章主要介绍了Quick-cocos2d-x的MVC架构之model研究,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
最近正在学习Quick-cocos2d-x下的MVC架构,做下笔记
MVC架构包含model、controller、view
model一般是会有多个实例的类,该类只有数据没有视图,比如Hero类
controller一般一个类就是一个全局对象,比如PlayDuelController
views一般就是界面表现部分,比如Hero类增加图形表示后的HeroView类
对于一些场景、层、控件不一定要放在views目录下,可以单独建立一个sce
nes、controls的目录
本篇主要是归纳一下model的写法,这里会用我自己定义的类来做演示,
同时也可以参考Quick-cocos2d-x示例代码中的mvc例子,另外版本是3.3
一.基本定义
1.基本类定义
1)第一级类
--从cc.mvc.ModelBase派生
local People = class("People",cc.mvc.ModelBas
E)
--构造函数是固定格式
--properties是一个表,所有初始参数都
在这一个参数里
--用super.ctor初始化父类构造函数,注意用.,而且前面有self
function People:ctor(properties,events,call
BACks)
People.super.ctor(self,properties)
end
--返回对象
return People
2)派生类
--引入基类
local People = import(".People")
--派生
local Man = class("Man",Peopl
E)
function Man:ctor(properties,call
BACks)
Man.super.ctor(self,properties,call
BACks)
end
return Man
2.对象生成
--包含文件
local People =
require("src.app.model
s.People")
--new对象,每次new是会新产生对象实例,参数是table类型
local People1 = People.new(
{name="tom"})
local People2 = People.new(
{name="
Mary"})
3.定义属性
--先把父类的属性表clone过来
People.
scheR_667_11845@a = clone(cc.mvc.ModelBase.
scheR_667_11845@a)
--定义属性,
后面的是类型
People.
scheR_667_11845@a["name"] =
{"
String"}
--
number类型属性要有默认值
People.
scheR_667_11845@a["sleepTime"] =
{"
number",0}
--实际的变量名是属性名+_,要增加get和set两个函数存取
function People:getName()
return self.name_
end
function People:setName(
Name)
self.name_ = name
end
--使用方法
printf("People1 name=%s",People1:getName())
People1:setName("chendana")
printf("People1 name=%s",People1:getName())
4.定义方法
function People:eat(
number)
print("in function eat")
end
二.面向对象性
1.函数多态
lua没法写函数参数不同的同名函数,如果真要这么写,实际调用会自动调用最后那个
比如:
function People:eat(
number,typ
E)
print("in function eat(
number,typ
E)")
end
function People:eat(
number)
print("in function eat(
number)")
end
People1:eat(10,1)
最后会显示in function eat(
number),如果把函数位置调一下,就会调用后面定义的
2.派生类函数覆盖
@H_
262_106@--可以直接覆盖,用super的函数调用基类处理
@H_
262_106@--注意也是用.,而且参数要有self,
不能写成Man.super:eat(
number) function Man:eat(
number) print("in man function eat(
number)") Man.super.eat(self,
number) end 3.虚函数 是自动支持的 父类 function People:normal() print("in function People:normal") end function People:sleep(tim
E) print("in function People:sleep(tim
E)") end function People:eat(
number) print("in function People:eat(
number)") end function People:dayAction() self:normal() self:eat(5) self:sleep(10) end 派生类 function Man:eat(
number) print("in function Man:eat(
number)") Man.super.eat(self,
number) end 调用 local Man1 = Man.new(
{name="tom",beard="1"}) Man1:dayAction() 会显示 [LUA-print] in function People:normal [LUA-print] in function Man:eat(
number) [LUA-print] in function People:eat(
number) [LUA-print] in function People:sleep(tim
E)
大佬总结
以上是大佬教程为你收集整理的Quick-cocos2d-x的MVC架构之model研究全部内容,希望文章能够帮你解决Quick-cocos2d-x的MVC架构之model研究所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。