版本:2.3.4
参考:
cocos教程:生命周期回调
cocos的cc.Component组件有如下生命周期
- construct 新建时触发,整个生命周期只会触发一次
- onLoad 节点激活时触发,整个生命周期只会触发一次
- start 节点第一次激活时触发,在update之前,整个生命周期只会触发一次
- update 动画、物理、粒子等渲染前执行,每帧调用
- lateUpdate 动画、物理、粒子等渲染后执行,每帧调用
- onDestroy 销毁时执行,整个生命周期只会触发一次
- onEnable 组件enabled从false变为true,或者节点active从false变为true触发
- onDisable 组件enabled从true变为false,或者节点active从ture变为false触发
现在新建一个商店界面,到移除的过程。
一 新建一个组件商店面板 new ShopPanel()
1. 此时无法通过cc.find等获取商店里的其他节点
执行:
construct
二 添加组件到舞台 addChild(shopPanel.node)
1.此时可以通过cc.find等获取商店里的其他节点
执行:
onLoad
onEnable
start
update
lateUpdate
三 组件从舞台移除 removeChild(shopPanel.node)
执行:
onDisable
四 再次添加组件到舞台,addChild(shopPanel.node)
1. onLoad和start不会再触发。
执行:
onEnable
update
lateUpdate
五 shopPanel.enabled = false
1.不会再调用update,lateUpdate了
执行:
onDisable
六 shopPanel.enabled = true
1.又重新执行update和lateUpdate了
执行:
onEnable
update
lateUpate
七 shopPanel.node.active = false
1. 舞台上不显示商店面板了
2.不再执行udpate和LateUpdate
2.如果只是想隐藏商店,但是继续执行update,可以使用shopPanel.node.opacity = 0隐藏,shopPanel.node.opacity = 255显示
执行:
onDisable
八 shopPanel.node.active = true
1.舞台上显示商店面板
2.重新执行update和LateUpdate
执行:
onEnable
update
lateUpdate
九 shopPanel.node.destroy
1. destroy调用后不会立即销毁,在当前逻辑帧更新后统一销毁。可以通过cc.isValid判断该组件是否可用。
执行:
onDisable
onDestroy