cc.Component
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cc.Component相关的知识,希望对你有一定的参考价值。
组建入口函数
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就是只有一个,而数组是有多个
}
sprite_item:{ type: cc.Sprite,//类型 你要绑哪个组建 default: null, //默认值 可以是null或者空数组 },
关联组件的时候,一旦节点上有这个组件,他是把这个节点
组件实例给他。 也就是把组建实例给这个sprite_item
这时候我们可个这个组建实例,比如让他所指向的节点进行旋转
var rt = cc.rotateTo(3,180); this.sprite_item.node.runAction(rt)
如果是自己的代码组建,获取方法.
var my_item = require("my_item") custo: { type: my_item, default: null, }
组建 添加、查找、删除
1.在当前节点添加一个组件,可以是系统组建,cc.Sprite,cc.Label
也可以是代码组建的名字.反回值是挂上的组建实例
一个节点可以挂载多个组件
var com_inst = this.addComponent("my_item")
组建实例挂载的节点node也可以添加组建
var com_inst = this.node.addComponent("my_item")
2.查找一个组件
com_inst = this.getComponent("my_item"); //反回第一个找到的组件 console.log(com_inst);
如果这个节点挂有多个组件 后面多一个s
var arr = this.getComponents("my_item");//返回组件列表 console.log(arr );
在自己和子节点里去查找这个组建实例 反回找到第一个
getComponentInChildren
在自己和子节点里去查找这个组建实例 反回第一个
getComponentsInChildren
3删除组件 删除当前组建实例
触发onDisable 和 onDestroy
destroy()
Shedule定时器操作
1.scheduleOnce(函数,time):time秒后启动一次定时器
//启动一次定时器 只触发一次 this.scheduleOnce(function(){ console.log("sheduleOnce"); }.bind(this),3);
2.schedule(函数,多长时间执行一次,次数+1,多长时间后开始执行);
比如说我要2秒后开始执行定时器,每隔3秒执行一次,共执行7次
执行的次数他会自动加1 因为你填0 他默认就是+1。
this.schedule(function(){ console.log("schedule"); }.bind(this),3,6,2);
如果要执行无数次,参数次数可以填写成 cc.macro.REPEAT_FOREVER
如果要马上开始,并且2秒一次可以这样,他默认是无限次执行
this.schedule(回调函数,几秒执行一次)
this.schedule(回调函数,几秒执行一次)
3.unschedule(函数)取消这个定时器操作
使用这个的时候,要求你的回调函数必须被保存
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.注意,如果节点或组建没有激活是不会调用的.
也就是说你被隐藏的他都不会执行.
以上是关于cc.Component的主要内容,如果未能解决你的问题,请参考以下文章