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的主要内容,如果未能解决你的问题,请参考以下文章

部分cocoscreator左右移动代码

在cocos creator中使用代码给TileMap地图块添加碰撞体

CocosCreator动作系统

COCOS CREATOR(TS)之按钮事件

JavaScript 表达式,条件,循环

JavaScript基本数据类型,函数对象,表,数组,字符串,函数调用