[cocos2dx]实例认识分析MVC模式

[cocos2dx]实例认识分析MVC模式,第1张

概述mvc模式 Model(模型):一般负责数据的处理 View(视图):一般负责界面的显示 Controller(控制器):一般负责前端的逻辑处理 实例 捉虫游戏,背景介绍:两类虫(蚂蚁和蜘蛛)进洞超过3个,玩家就失败。 在实际开发中,我遇到的头疼麻烦的事,不知道M、V、C他们之间的调用是怎样的? M模型 BugAnt和BugSpider都继承BugBase. V视图 1.视图BugSprite依赖 mvc模式

Model(模型):一般负责数据的处理
VIEw(视图):一般负责界面的显示
Controller(控制器):一般负责前端的逻辑处理

实例

捉虫游戏,背景介绍:两类虫(蚂蚁和蜘蛛)进洞超过3个,玩家就失败。

在实际开发中,我遇到的头疼麻烦的事,不知道M、V、C他们之间的调用是怎样的?

M模型

BUGAnt和BUGSpIDer都继承BUGBase.

V视图


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模式所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1067986.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存