组建入口函数
1.onLoad:组建加载的时候调用,保证了你可以获取到场景中的其他节点,
以及节点关了的资源数据,
这时候场景全部初始化完毕了,不用担心场景节点没出来.
2.start:也就是第一次执行update之前触发,在onLoad之后。
3.update(dt):组建每次刷新的时候调用,dt是距离上一次的刷新的时间
(会在所有动画更新前执行)
4.lateUpdate(dt):刷新完后调用,(在所有动画更新后执行)
5.onEnable:启用这个组件的时候调用 在start之前onLoad之后调用
6.onDisable:禁用这个组建的时候调用
7.onDestroy:组建实例销毁的时候调用
cc.Component属性
1.组件类:是所有组件的基类;
2.this;指的是当前这个组建的实例
3.node:指向这个组件实例所挂载的这个节点(cc.Node);
就是说如果你要找这个节点,就要通过组建实例指.所挂载的节点.
就是: this.node
4.name这个组件实例所挂载的节点的名字;
this.name输出的是: 组建实例所挂载节点名称<组建名>
this.node.name 组建实例所挂载节点名称
5.属性列表,如果写在这里面就能在编辑器里绑定这些数据
基本数据类型
properties:{
基本数据类型:数,bool,字符串,color,pos,size
speed:1,整数
is_debug:false,bool
url:"baidu.com",字符串
color:cc.color(100,20,20,255),颜色
pos:cc.p(0,0),位置坐标
size:cc.size(100,100),大小
}
效果图
比如你要一个精灵组建,可以使用系统组建:cc.Sprite cc.Button
还可以放组建:{
type:组建类型,系统类型,也可以require自己编写的组建类型
default:null or []
null就是只有一个,而数组是有多个
}
1
2
3
4
|
sprite_item:{
type: cc.Sprite,
//类型 你要绑哪个组建
default
:
null
,
//默认值 可以是null或者空数组
},
|
关联组件的时候,一旦节点上有这个组件,他是把这个节点
组件实例给他。 也就是把组建实例给这个sprite_item
这时候我们可个这个组建实例,比如让他所指向的节点进行旋转
1
2
|
var
rt = cc.rotateTo(3,180);
this
.sprite_item.node.runAction(rt)
|
1
|
<br data-filtered=
"filtered"
>
|
如果是自己的代码组建,获取方法.
1
2
3
4
5
6
|
var
my_item = require(
"my_item"
)
custo: {
type: my_item,
default
:
null
,
}
|
组建 添加、查找、删除
1.在当前节点添加一个组件,可以是系统组建,cc.Sprite,cc.Label
也可以是代码组建的名字.反回值是挂上的组建实例
一个节点可以挂载多个组件
1
|
var
com_inst =
this
.addComponent(
"my_item"
)
|
组建实例挂载的节点node也可以添加组建
1
|
var
com_inst =
this
.node.addComponent(
"my_item"
)
|
2.查找一个组件
1
2
|
com_inst =
this
.getComponent(
"my_item"
);
//反回第一个找到的组件
console.log(com_inst);
|
如果这个节点挂有多个组件 后面多一个s
1
2
|
var
arr =
this
.getComponents(
"my_item"
);
//返回组件列表
console.log(arr );
|
在自己和子节点里去查找这个组建实例 反回找到第一个
getComponentInChildren
在自己和子节点里去查找这个组建实例 反回第一个
getComponentsInChildren
3删除组件 删除当前组建实例
触发onDisable 和 onDestroy
destroy()
Shedule定时器操作
1.scheduleOnce(函数,time):time秒后启动一次定时器
1
2
3
4
|
//启动一次定时器 只触发一次
this
.scheduleOnce(
function
(){
console.log(
"sheduleOnce"
);
}.bind(
this
),3);
|
2.schedule(函数,多长时间执行一次,次数+1,多长时间后开始执行);
比如说我要2秒后开始执行定时器,每隔3秒执行一次,共执行7次
执行的次数他会自动加1 因为你填0 他默认就是+1。
1
2
3
|
this
.schedule(
function
(){
console.log(
"schedule"
);
}.bind(
this
),3,6,2);
|
如果要执行无数次,参数次数可以填写成 cc.macro.REPEAT_FOREVER
如果要马上开始,并且2秒一次可以这样,他默认是无限次执行
this.schedule(回调函数,几秒执行一次)
1
|
this
.schedule(回调函数,几秒执行一次)
|
3.unschedule(函数)取消这个定时器操作
使用这个的时候,要求你的回调函数必须被保存
1
2
3
4
5
6
7
8
9
|
var
cfunc =
function
(){
console.log(
"schedule"
);
}.bind(
this
);
this
.schedule(cfunc,2,cc.macro.REPEAT_FOREVER,2);
//8秒后停止这个定时器
this
.scheduleOnce(
function
(){
console.log(
"停止定时器"
);
this
.unschedule(cfunc);
}.bind(
this
),8);
|
4.unscheduleAllcallbacks() 取消所有的定时器操作
5.注意,如果节点或组建没有激活是不会调用的.
也就是说你被隐藏的他都不会执行.
本文转自超级极客51CTO博客,原文链接:http://blog.51cto.com/12158490/2065196,如需转载请自行联系原作者