tips
-
this.node.destory()和this.node.removeFromParent
第一次接触到cocos creator的this.node.destory()是在做官方给出的事例,但是发现调用这个destory会报错,于是搜索了一下,也没有结果,但是发现了一个与他相似的东西叫做this.node.removeFromParent() 试了一下 这个倒没有出现问题。先记录一下 ,想搞明白这个destory()到底是设么毛病。感觉自己解决了,拼写问题,这个坑感觉还蛮大的,文档给出的是troy但个人常用写法为tory
- Math.abs()
顾名思义abs即absolute
返回绝对值的意思 -
this.node可以获得当前组件
获得同一个节点上的其他组件要用getComponentstart: function () { var label = this.getComponent(cc.Label); var text = this.name + ' started'; // Change the text in Label Component label.string = text; }
也可以传入一个类名。对用户定义的组件来说类名就是脚本名
var rotate = this.getComponent("SinRotate");
- 利用属性检查器设置组件
在上面的例子中,如果你将属性的 type 声明为 Player 组件,当你拖动节点 "Player Node" 到 属性检查器,player 属性就会被设置为这个节点里面的 Player 组件。这样你就不需要再自己调用 getComponent 啦。
// Cannon.js
var Player = require("Player");
cc.Class({
extends: cc.Component,
properties: {
// 声明 player 属性,这次直接是组件类型
player: {
default: null,
type: Player
}
},
start: function () {
var playerComp = this.player;
this.checkPlayer(playerComp);
},
//...
});
还可以将属性的默认值由 null 改为数组[],这样你就能在 属性检查器 中同时设置多个对象。
不过如果需要在运行时动态获取其它对象,还需要用到下面介绍的查找方法。
生命周期
onLoad组件脚本的初始化
一般在场景载入时触发该回调
start
第一次执行 update 之前触发。start 通常用于初始化一些中间状态的数据,这些数据可能在 update 时会发生改变,并且被频繁的 enable 和 disable。
update很关键,游戏开发的关键点
每一帧渲染物体的行为,状态,方位等。这些更新操作通常都放在update中
lateUpdate
update会在所有动画更新前执行
但如果要在动画效果如粒子效果更新之后才进行额外操作,就要放在lateUpdate中回调
onDestroy
当组件或者所在节点调用了destroy()则会调用onDestroy回调
onEnable
当组件的 enabled 属性从 false 变为 true 时,或者所在节点的 active 属性从 false 变为 true 时,会激活 onEnable 回调。倘若节点第一次被创建且 enabled 为 true,则会在 onLoad 之后,start 之前被调用。
onDisable
当组件的 enabled 属性从 true 变为 false 时,或者所在节点的 active 属性从 true 变为 false 时,会激活 onDisable 回调
节点操作
- 节点的创建、克隆、创建预制节点和销毁
-
创建
cc.Class({ extends: cc.Component, properties: { sprite: { default: null, type: cc.SpriteFrame, }, }, start: function () { <!-- 通过new cc.Node实例化一个节点 --> var node = new cc.Node('Sprite'); <!-- 将节点添加为组件 --> var sp = node.addComponent(cc.Sprite); <!-- 将组建添加到场景中 --> sp.spriteFrame = this.sprite; node.parent = this.node; }, });
-
克隆通过cc.instantiate来完成
cc.Class({ extends: cc.Component, properties: { target: { default: null, type: cc.Node, }, }, start: function () { var scene = cc.director.getScene(); var node = cc.instantiate(this.target); node.parent = scene; node.setPosition(0, 0); }, });
- 创建预制节点与克隆,不过type那里是cc.Prefab,我目前的理解是相当于克隆了一份预制节点
- 销毁节点采用this.node.destroy()即可
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。