Model(模型):一般负责数据的处理
VIEw(视图):一般负责界面的显示
Controller(控制器):一般负责前端的逻辑处理
捉虫游戏,背景介绍:两类虫(蚂蚁和蜘蛛)进洞超过3个,玩家就失败。
在实际开发中,我遇到的头疼麻烦的事,不知道M、V、C他们之间的调用是怎样的?
M模型BUGAnt和BUGSpIDer都继承BUGBase.
1.视图BUGSprite依赖模型BUGBase
function GameVIEw:addBUG() local BUGType = BUGBase.BUG_TYPE_ANT if math.random(1,2) % 2 == 0 then BUGType = BUGBase.BUG_TYPE_SPIDER end local BUGModel if BUGType == BUGBase.BUG_TYPE_ANT then BUGModel = BUGAnt:create() else BUGModel = BUGSpIDer:create() end local BUG = BUGSprite:create(GameVIEw.IMAGE_filenameS[BUGType],BUGModel) :start(GameVIEw.HolE_position) :addTo(self.BUGsNode_,GameVIEw.ZORDER_BUG) self.BUGs_[BUG] = BUG return selfend
2.帧率刷动---虫子的生产和爬动,及进洞
function GameVIEw:step(dt) if self.lives_ <= 0 then return end self.addBUGInterval_ = self.addBUGInterval_ - dt if self.addBUGInterval_ <= 0 then self.addBUGInterval_ = math.random(GameVIEw.ADD_BUG_INTERVAL_MIN,GameVIEw.ADD_BUG_INTERVAL_MAX) self:addBUG() -- 随机生成虫子 end for _,BUG in pairs(self.BUGs_) do BUG:step(dt) -- 虫子爬动 if BUG:getModel():getdist() <= 0 then self:BUGEnterHole(BUG) -- 进入洞穴 end end return selfendfunction GameVIEw:BUGEnterHole(BUG) self.BUGs_[BUG] = nil BUG:fadeOut({time = 0.5,removeSelf = true}) :scaleto({time = 0.5,scale = 0.3}) :rotateto({time = 0.5,rotation = math.random(360,720)}) self.lives_ = self.lives_ - 1 self.livesLabel_:setString(self.lives_) audio.playSound("BUGEnterHole.wav") if self.lives_ <= 0 then self:dispatchEvent({name = GameVIEw.events.PLAYER_DEAD_EVENT}) end return selfend
3.手击中虫子
function GameVIEw:ontouch(event) if event.name ~= "began" then return end local x,y = event.x,event.y for _,BUG in pairs(self.BUGs_) do if BUG:getModel():checktouch(x,y) then self:BUGDead(BUG) end endendfunction GameVIEw:BUGDead(BUG) local imagefilename = GameVIEw.IMAGE_filenameS[BUG:getModel():getType()] DeadBUGSprite:create(imagefilename) :fadeOut({time = 2.0,delay = 0.5,removeSelf = true}) :move(BUG:getposition()) :rotate(BUG:getRotation() + 120) :addTo(self.BUGsNode_,GameVIEw.ZORDER_DEAD_BUG) self.BUGs_[BUG] = nil BUG:removeSelf() self.kills_ = self.kills_ + 1 audio.playSound("BUGDead.wav") return selfend
参考:我所理解cocos2d-x 3.6 lua -- 初识MVC
总结以上是内存溢出为你收集整理的[cocos2dx]实例认识分析MVC模式全部内容,希望文章能够帮你解决[cocos2dx]实例认识分析MVC模式所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)