생명주기 Life cycle callback
코코스 크리에어터는 component 스크립트를 위한 life cycle 콜백함수를 제공합니다. 유저가 아래 명시된 콜백함수를 정의만 해놓으면 수동적으로 호출할 필요없이 생명주기에 따라 자동으로 호출됩니다.
현재, Creator에서 지원하는 생명주기 콜백함수:
- onLoad
- start
- update
- lateUpdate
- onDestroy
- onEnable
- onDisable
onLoad
component script가 초기화 되는 단계에서, creator는 onLoad 콜백을 실행합니다. onLoad 콜백은 component가 처음 실행될 때 트리거 되죠. (Scene이 로드되거나, node가 실행되었을 때) onLoad 단계는 scene에 있는 다른 노드나 노드에 관련된 resource를 가져올 수 있게 보장해줍니다. onLoad는 항상 어떠한 start 함수들보다 먼저 실행됩니다. 일반적으로, 노드의 초기화 구문을 여기다 넣는 것을 권장합니다. 예를들어:
cc.Class({
extends: cc.Component,
properties: {
bulletSprite: cc.SpriteFrame,
gun: cc.Node,
},
onLoad: function () {
this._bulletRect = this.bulletSprite.getRect();
this.gun = cc.find('hand/weapon', this.node);
},
});
start
start 콜백함수는 component 의 첫 실행시에만 트리거 됩니다. update의 첫 프레임 이전에 실행된다고 생각하면 됩니다. start 콜백은 일반적으로 update 동안 사용되는 변수를 초기화할 때 사용합니다.
cc.Class({
extends: cc.Component,
start: function () {
this._timer = 0.0;
},
update: function (dt) {
this._timer += dt;
if ( this._timer >= 10.0 ) {
console.log('I am done!');
this.enabled = false;
}
},
});
update
게임에서 가장 중요한 것들 중 하나인 매 프레임마다 객체의 행동을 정의하거나 상태를 변경할 수 있는 update 콜백입니다.
cc.Class({
extends: cc.Component,
update: function (dt) {
this.node.setPosition( 0.0, 40.0 * dt );
}
});
lateUpdate
update는 모든 animation update 전에 실행됩니다. 하지만 우리가 animation 업데이트 이후에 뭔가를 실행하고 싶거나, 모든 컴포넌트들의 update가 끝나고 뭔가를 하고 싶다면 다음의 lateUpdate를 사용하세요.
cc.Class({
extends: cc.Component,
lateUpdate: function (dt) {
this.node.rotation = 20;
}
});
onEnable
컴포넌트가 달린 node의 active 프로퍼티가 false에서 true가 될 때나, 컴포넌트의 enabled 프로퍼티가 false에서 true가 될 때, onEnable 콜백은 트리거 됩니다. 만약 node가 처음 만들어졌고, enabled가 true라면, onLoad 이후에 하지만 onStart 이전에 onEnable 콜백은 실행될 것 입니다.
onDisable
컴포넌트가 달린 node의 active 프로퍼티가 true에서 false가 될 때나, 컴포넌트의 enabled 프로퍼티가 true에서 false가 될 때, onEnable 콜백은 트리거 됩니다.
onDestroy
component나 node가 destroy() 호출했을 때, onDestroy 콜백은 트리거 됩니다. destroy가 호출된 프레임이 끝나게 되면 실행됩니다.
'Frontend > Cocos Creator' 카테고리의 다른 글
[Cocos Creator] ScrollView 개념 및 사용 예시 (2) | 2018.01.29 |
---|---|
[Cocos Creator] Decorator 사용하기 (0) | 2018.01.04 |
[Cocos Creator] cc.Class 파헤치기 (0) | 2017.11.21 |
[Cocos Creator Animation] 1. Animation에 대하여 (0) | 2017.10.27 |
[Cocos Creator 강좌] RichText 사용하기 (0) | 2017.10.19 |
[Cocos Creator 강좌] Label에 Dynamic Font 적용하기 (0) | 2017.10.19 |