展会信息港展会大全

Cocos2d-x Lua中生命周期函数
来源:互联网   发布日期:2015-09-28 11:08:29   浏览:2003次  

导读: 场景(Scene)以及所有节点(Node)的生命周期事件如下: enter。进入场景时候触发。 enterTransitionFinish。进入场景而且过渡动画结束时候触发。 exit。退出场...

场景(Scene)以及所有节点(Node)的生命周期事件如下:

enter。进入场景时候触发。

enterTransitionFinish。进入场景而且过渡动画结束时候触发。

exit。退出场景时候触发 。

exitTransitionDidStart。退出场景而且开始过渡动画时候触发。

cleanup。场景对象被清除时候触发。

提示 GameScene场景中的(Scene)继承于节点(Node),这些生命周期事件根本上是从Node继承而来。事实上所有Node对象(包括:场景、层、精灵等)都有这些事件,具体实现代码与GameScene场景类似。

我们为GameScene场景添加生命周期函数相关代码如下:require Cocos2d

require Cocos2dConstants

local SettingScene = require(SettingScene)

local size = cc.Director:getInstance():getWinSize()

local GameScene = class(GameScene,function()

return cc.Scene:create()

end)

function GameScene.create()

local scene = GameScene.new()

scene:addChild(scene:createLayer())

return scene

end

function GameScene:ctor()①

cclog(GameScene init)

--场景生命周期事件处理

local function onNodeEvent(event)

if event == enter then②

self:onEnter()

elseif event == enterTransitionFinish then③

self:onEnterTransitionFinish()

elseif event == exit then④

self:onExit()

elseif event == exitTransitionStart then⑤

self:onExitTransitionStart()

elseif event == cleanup then⑥

self:cleanup()

end

end

self:registerScriptHandler(onNodeEvent)⑦

end

function GameScene:onEnter()⑧

cclog(GameScene onEnter)

end

function GameScene:onEnterTransitionFinish()⑨

cclog(GameScene onEnterTransitionFinish)

end

function GameScene:onExit()⑩

cclog(GameScene onExit)

end

function GameScene:onExitTransitionStart()?

cclog(GameScene onExitTransitionStart)

end

function GameScene:cleanup()?

cclog(GameScene cleanup)

end

… …

return GameScene

上述代码第①行GameScene:ctor()是GameScene场景构造函数,在次函数中进行GameScene场景的初始化,也就是触发init事件。第②~⑥行代码场景生命周期事件处理,根据事件event对象判断是哪一种类型的场景生命周期事件。其中第②行是判断enter事件,是场景进入时候触发,判断为true情况下,然后通过代码self:onEnter()调用第⑧行的GameScene:onEnter()函数。

第③行是判断enterTransitionFinish事件,是场景进入并且过渡动画完成时候触发,判断为true情况下,然后通过代码self:onEnterTransitionFinish()调用第⑨行的GameScene:onEnterTransitionFinish()函数。

第④行是判断exit事件,是场景退出时候触发,判断为true情况下,然后通过代码self:onExit()调用第⑩行的GameScene:onExit()函数。

第⑤行是判断exitTransitionStart事件,是场景退出过渡动画开始时候触发,判断为true情况下,然后通过代码self:onExitTransitionStart()调用第?行的GameScene:onExitTransitionStart()函数。

第⑥行是判断cleanup事件,是场景销毁时候触发,判断为true情况下,然后通过代码self:cleanup()调用第?行的GameScene:cleanup()函数。

如果GameScene是第一个场景,当启动GameScene场景时候,它的调用顺序如下图所示。第一个场景启动顺序提示 GameScene init事件并不是从节点继承的事件(enter、enterTransitionFinish、exit、exitTransitionStart和cleanup),“GameScene init”日志信息是在GameScene:ctor()构造函数中输出的。我们把ctor()构造函数调用与其它的几个事件调用放在一起讨论,那么因为ctor()构造函数是用于初始化场景的,它相当于init事件的作用,因此本书将ctor()构造函数调用都称为“init事件”触发。local function onNodeEvent(event)

if event == enter then②

self:onEnter()

elseif event == enterTransitionFinish then③

self:onEnterTransitionFinish()

elseif event == exit then④

self:onExit()

elseif event == exitTransitionStart then⑤

self:onExitTransitionStart()

elseif event == cleanup then⑥

self:cleanup()

end

赞助本站

人工智能实验室
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港