场景(Scene)以及所有节点(Node)的生命周期事件如下:
enter。进入场景时候触发。
enterTransitionFinish。进入场景而且过渡动画结束时候触发。
exit。退出场景时候触发 。
exitTransitionDidStart。退出场景而且开始过渡动画时候触发。
cleanup。场景对象被清除时候触发。
提示 GameScene场景中的(Scene)继承于节点(Node),这些生命周期事件根本上是从Node继承而来。事实上所有Node对象(包括:场景、层、精灵等)都有这些事件,具体实现代码与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