cocos2dx + lua 中实现 lua的MVC

cocos2dx + lua 中实现 lua的MVC,第1张

概述创建两个类,,CGMainSceneManager是单例,用于MC,CGMainScene 用于V。实现方式类似c++的类 local CGMainScene = class("CGMainScene",function()     return ZnBaseScene:create() end) function CGMainScene.create()     local scene = CG


创建两个类,,CGMainSceneManager是单例,用于MC,CGMainScene 用于V。实现方式类似c++的类


local CGMainScene = class("CGMainScene",function()
return ZnBaseScene:create()
end)


function CGMainScene.create()
local scene = CGMainScene.new()
scene:init()

scene:registerScriptHandler(function(event)
if "enter" == event then
scene:enter()
elseif "exit" == event then
scene:exit()
end
end)

return scene
end


function CGMainScene:ctor()


self._visibleSize = cc.Director:getInstance():getVisibleSize()
self.origin = cc.Director:getInstance():getVisibleOrigin()
self.schedulerID = nil


end


function CGMainScene:init()


CGMainManager:instance():init()
CGMainManager:instance():createBgScrollVIEw()
self:addChild(CGMainManager:instance()._scrollVIEw)
CGMainManager:instance():addCheckPoint(CGMainManager:instance()._bgtablename)


local pointtable = {}
pointtable["level"] = 6
pointtable["state"] = 2
pointtable["starnum"] = 2
CGMainManager:instance():setStarandState(pointtable)




local buttonnode = cc.csloader:createNode("buttonLayer.csb")
buttonnode:setposition(VisibleRect.worldspace(cc.p(self._visibleSize.wIDth / 2,self._visibleSize.height)))
self:addChild(buttonnode,CGMainManager:instance()._panelZorder.kbuttonZorder)



local function buttontouchEvent(sender,eventType)
if eventType == ccui.touchEventType.began then

elseif eventType == ccui.touchEventType.ended then
if sender:getTag() == 1 then
print("-----------shopbutton----============")


elseif sender:getTag() ==2 then
print("-----------Rolebutton----============")
elseif sender:getTag() == 3 then
print("-----------incubatorbutton----============")
elseif sender:getTag() == 4 then
print("-----------lotterybutton----============")
elseif sender:getTag() == 5 then
print("-----------signbutton----============")
elseif sender:getTag() == 6 then
print("-----------Taskbutton----============")
elseif sender:getTag() == 7 then
print("-----------Bagbutton----============")
elseif sender:getTag() == 8 then
print("-----------button8----============")
elseif sender:getTag() == 9 then
print("-----------button9----============")
elseif sender:getTag() == 10 then
print("-----------button10----============")
end
end
end



local children = buttonnode:getChildren()
local len = table.getn(children)
for i=1,len do
children[i]:addtouchEvent@R_502_6818@ener(buttontouchEvent)
end





-- CGMainManager:instance():setoffset()

--关于体力,金币,银币图
CGMainManager:instance():setPanelEvent()
local function IcontouchEvent(sender,eventType)
if eventType == ccui.touchEventType.began then

elseif eventType == ccui.touchEventType.ended then


if sender:getTag() == 1 then
print("icon energy button is touch ")
elseif sender:getTag() == 2 then
print("icon silver button is touch")
elseif sender:getTag() == 3 then
print("icon golden button is touch")
end
end
end


CGMainManager:instance()._energyIcon:addtouchEvent@R_502_6818@ener(IcontouchEvent)
CGMainManager:instance()._goldenIcon:addtouchEvent@R_502_6818@ener(IcontouchEvent)
CGMainManager:instance()._silverIcon:addtouchEvent@R_502_6818@ener(IcontouchEvent)

CGMainManager:instance()._panelinfo:setposition(VisibleRect.worldspace(cc.p(self._visibleSize.wIDth * 0.15,0.1 * self._visibleSize.height)))
self:addChild(CGMainManager:instance()._panelinfo,CGMainManager:instance()._panelZorder.kPanelZorder)
CGMainManager:instance():setPanelinfo()


--CGMainManager:instance():playEffect()


end


function CGMainScene:enter()
--print("CGMainScene:enter")
end


function CGMainScene:exit()
--print("CGMainScene:exit")
end


return CGMainScene










local instance = nil require("CGMainScene") CGMainManager = class("CGMainManager",function() return ZnBaseHandler:create() end) function CGMainManager:instance() if instance ~= nil then return instance end instance = CGMainManager.new() return instance end function CGMainManager:reset() if instance ~= nil then instance = false end end function CGMainManager:ctor() self._winSize = cc.Director:getInstance():getWinSize() self._visibleSize = cc.Director:getInstance():getVisibleSize() end function CGMainManager:init() self._checkPointtable = {} self._scrollVIEw = nil imageVIEwTag = 100 self._imageVIEw = cc.Sprite:create("guanka1.png") -- image for test verticalTotal = 0 --竖直方向上的间隔 verticalSpace = 0 verticalOffset = 450 self._bgtablename = { "MainMap_1","MainMap_2","MainMap_3","MainMap_4","MainMap_5",} --浮动面板 self._panelinfo = nil self._curEnergyLabel = nil self._totalEnergyLabel = nil self._goldenLabel = nil self._silverLabel = nil self._energyIcon = nil self._goldenIcon = nil self._silverIcon = nil self._panelZorder = { kPanelZorder = 1,kbuttonZorder = 2,} --提示框 alertVIEw = nil cdTime = 10*60*60 --for test level = 20 end function CGMainManager:createBgScrollVIEw() print("create bg scrollVIEw ") self._scrollVIEw = cc.ScrollVIEw:create() local function scrollVIEw1DIDScroll() end local function scrollVIEw1DIDZoom() end if nil ~= self._scrollVIEw then self._scrollVIEw:setVIEwSize(cc.size(self._winSize.wIDth,self._winSize.height)) self._scrollVIEw:setposition(cc.p(0,0)) self._scrollVIEw:setScale(1.0) self._scrollVIEw:ignoreAnchorPointForposition(true) self._scrollVIEw:setContentSize(cc.size(self._winSize.wIDth,self._winSize.height * #self._bgtablename -verticalOffset * 2)) self._scrollVIEw:setDirection(cc.SCRolLVIEW_DIRECTION_VERTICAL ) self._scrollVIEw:setBounceable(true) self._scrollVIEw:setDelegate() self._scrollVIEw:registerScriptHandler(scrollVIEw1DIDScroll,cc.SCRolLVIEW_SCRIPT_SCRolL) end end function CGMainManager:addCheckPoint(bgtable) --添加关卡 print("this is checkPoint add function ") local function touchCheckPointEvent(sender,eventType) if eventType == ccui.touchEventType.began then print(sender:getParent():getParent():getTag()) local tag = sender:getParent():getParent():getTag() elseif eventType == ccui.touchEventType.moved then elseif eventType == ccui.touchEventType.ended then end end for i=1,table.getn(bgtable) do --添加背景 local name = bgtable[i] .. ".csb" local bg = cc.csloader:createNode(name) local bgsprite = bg:getChildByname(bgtable[i]) local children = bgsprite:getChildren() local len = table.getn(children) for i = 0,len - 1,1 do local positionx = children[i + 1]:getpositionX() local positiony = children[i + 1]:getpositionY() local tag = children[i + 1]:getTag() --拿到tag值 local checkpoint = cc.csloader:createNode("Checkpoint.csb") checkpoint:setposition(cc.p(positionx,positiony)) table.insert(self._checkPointtable,checkpoint) bg:addChild(checkpoint,tag) local pointbg = checkpoint:getChildByname("Checkpoint_Bg") local button = pointbg:getChildByname("Point_button") button:addtouchEvent@R_502_6818@ener(touchCheckPointEvent) local star1 = pointbg:getChildByname("PointStar_1") local star2 = pointbg:getChildByname("PointStar_2") local star3 = pointbg:getChildByname("PointStar_3") local grayStar1 = pointbg:getChildByname("PointStar_Close1") local grayStar2 = pointbg:getChildByname("PointStar_Close2") local grayStar3 = pointbg:getChildByname("PointStar_Close3") local stateclose = pointbg:getChildByname("Point_Close") local stateopen = pointbg:getChildByname("Point_Open") local stateok = pointbg:getChildByname("Point_Ok") local imagepoint = pointbg:getChildByname("Sprite_image") local silverandgoldenPoint = pointbg:getChildByname("pointSilverOrGolden") silverandgoldenPoint:setVisible(false) local pointNum = pointbg:getChildByname("Point_Num") pointNum:setString(string.format("%s",tag)) self._checkPointtable[tag] = {} self._checkPointtable[tag]["startable"] = {} self._checkPointtable[tag]["grayStartable"] = {} self._checkPointtable[tag]["checkpointState"] = {} self._checkPointtable[tag]["starnum"] = {} self._checkPointtable[tag]["imagepoint"] = {} self._checkPointtable[tag]["pointbg"] = {} table.insert(self._checkPointtable[tag]["startable"],star1) table.insert(self._checkPointtable[tag]["startable"],star2) table.insert(self._checkPointtable[tag]["startable"],star3) table.insert(self._checkPointtable[tag]["grayStartable"],grayStar1) table.insert(self._checkPointtable[tag]["grayStartable"],grayStar2) table.insert(self._checkPointtable[tag]["grayStartable"],grayStar3) table.insert(self._checkPointtable[tag]["checkpointState"],stateclose) table.insert(self._checkPointtable[tag]["checkpointState"],stateopen) table.insert(self._checkPointtable[tag]["checkpointState"],stateok) table.insert(self._checkPointtable[tag]["starnum"],0) --当前等级获得几颗星 table.insert(self._checkPointtable[tag]["imagepoint"],imagepoint) table.insert(self._checkPointtable[tag]["pointbg"],pointbg) end bg:setposition(VisibleRect.worldspace(cc.p(0,self._visibleSize.height -(i - 1) * self._visibleSize.height + verticalOffset))) self._scrollVIEw:getContainer():addChild(bg,0) self._scrollVIEw:updateInset() end end function CGMainManager:setPanelEvent() self._panelinfo = cc.csloader:createNode("topbar.csb") local energybg = self._panelinfo:getChildByname("ico_energy_bg") local goldenbg = self._panelinfo:getChildByname("ico_gold_bg") local silverbg = self._panelinfo:getChildByname("ico_silver_bg") self._energyIcon = energybg:getChildByname("ico_energy") self._goldenIcon = goldenbg:getChildByname("ico_gold") self._silverIcon = silverbg:getChildByname("ico_silver") self._curEnergyLabel = energybg:getChildByname("energy_Num_left") self._totalEnergyLabel = energybg:getChildByname("energy_Num_Right") self._goldenLabel = goldenbg:getChildByname("gold_Num") self._silverLabel = silverbg:getChildByname("silver_Num") end function CGMainManager:setPanelinfo() local curEnergy = string.format("%s",300) local totalEnergy = string.format("%s",500) local golden = string.format("%s",1000) local silver = string.format("%s",2000) self._curEnergyLabel:setString(curEnergy) self._totalEnergyLabel:setString(totalEnergy) self._goldenLabel:setString(golden) self._silverLabel:setString(silver) end function CGMainManager:showAlertVIEw(flag) end function CGMainManager:setStarandState(Pointtable) -- start init local level = Pointtable["level"] local state = Pointtable["state"] local starnum = Pointtable["starnum"] if self._imageVIEw ~= nil then local pointx = self._checkPointtable[level]["imagepoint"][1]:getpositionX() local pointy = self._checkPointtable[level]["imagepoint"][1]:getpositionY() self._imageVIEw:setposition(cc.p(pointx,pointy)) self._checkPointtable[level]["pointbg"][1]:addChild(self._imageVIEw) for i=1,level do --star for j=1,starnum do self._checkPointtable[level]["grayStartable"][j]:setVisible(false) end --state if state ~= 1 then self._checkPointtable[level]["checkpointState"][1]:setVisible(false) self._checkPointtable[level]["checkpointState"][state]:setVisible(true) elseif state == 1 then end end end end function CGMainManager:setoffset() self._scrollVIEw:setContentOffset(cc.p(0,-verticalSpace)) end function CGMainManager:playEffect() -- 当前关卡要播放的一系列动作特效 是否通关 --动作测试 local tag = 6 local silverIconx = self._silverIcon:getpositionX() local silverIcony = self._silverIcon:getpositionY() local goldenIconx = self._goldenIcon:getpositionX() local goldenIcony = self._goldenIcon:getpositionY() local pointsilverIcon = self._silverIcon:convertToWorldspace(cc.p(silverIconx,silverIcony)) local pointgoldenIcon = self._goldenIcon:convertToWorldspace(cc.p(goldenIconx,goldenIcony)) local silverMove = cc.Moveto:create(2,pointsilverIcon) local goldenMove = cc.Moveto:create(2,pointgoldenIcon) local silver = cc.Sprite:create("guanka1.png") local golden = cc.Sprite:create("guanka1.png") silver:setposition(cc.p(10,10)) golden:setposition(cc.p(10,10)) --[[ local silverx = silver:getpositionX() local silvery = silver:getpositionY() local goldenx = golden:getpositionX() local goldeny = golden:getpositionY() local positonsilver = convertToWorldspace(cc.p(silverx,silvery)) local positiongolden = convertToWorldspace(cc.p(goldenx,goldeny)) ]] self._checkPointtable[tag]["pointbg"][1]:addChild(silver,100) self._checkPointtable[tag]["pointbg"][1]:addChild(golden,100) silver:runAction(silverMove) golden:runAction(goldenMove) end return CGMainManager

总结

以上是内存溢出为你收集整理的cocos2dx + lua 中实现 lua的MVC全部内容,希望文章能够帮你解决cocos2dx + lua 中实现 lua的MVC所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存