学习笔记脚本开发之节点与组件
来源:互联网 发布:3d数据图表制作软件 编辑:程序博客网 时间:2024/06/03 13:39
1.对象类型判断
var obj = new Sprite();
cc.log(obj instanceof Sprite); // ture
2.cc.Class 构造一个类
ctor: 构造函数(同lua)
3.简单声明
1.基本声明
properties: {
height: 20,
loaded: false
}
2.声明属性具备类型
properties: {
target: cc.Node,
pos: cc.Vec2,
}
3.声明属性是个数组,声明处可以填写类型
properties: {
bools: [cc.Boolean],
vals: [cc.Vec2],
}
4.完整声明
properties: {
score: {
default: 0,
displayName: "Score(Player)", //属性检查器中的名字
tooltip: "The socre of player" //鼠标移到参数上时
}
}
常用参数如下:
1.default: 设置默认值
2.type: 限定属性类型
3.visiable:设为false则不在属性检查其面板显示
4.serializable:设为false则不序列化改属性
5.displayName:在属性检查器中显示的名字
6.tooltip:在属性检查器中添加属性Tooltip
5.数组声明,default必须设置为[], 如果需要在 属性检查器 中编辑,则还需设置type为构造函数
properties: {
name: {
default: [],
type: [cc.String]
}
}
#===============================================#
#访问组件节点和组件(相对组件)
1.获得组件所在节点
var node = this.node;
2.获得其他组件(相对节点)
var label = this.getComponent(cc.Label);
getComponent方法也可以传入一个类型,相当于对象类型
var label = this.getComponent("cc.Label");
对于自定义组件而言,类型就是脚本名
var Test = this.getComponent("Test");
在节点上也有一个作用一样的方法,其是定义在node上
this.node.getComponent(cc.Label) == this.getComponent(cc.Label) // true
如果找不到对应组件,将返回null,然而尝试访问null值将会报错TypeError, 因此不确定组件
是否存在则可以预先判断一次。
#获得其他节点及其组件
1.可以直接在属性中通过属性检查器直接将其他节点设置进来。
2.查找子节点
var cannons = this.node.children <==> getCHildByName
如果子节点层次比较深则可以使用cc.find,他会根据传入的路径进行查找
cc.find("Cannonn01/Barrel/Sfx", this.node);
也可以直接根据名字查找(从场景根节点查找)
cc.find(Canvas/Menu/Back");
3.通过全局变量访问
windows.Global = {
backNode: null,
backLabel: null,
};
调用
Global.backNode = this.node;
4.通过模块访问
//文件 Global.js
module.exports = {
backNode: null,
backLabel: null,
}
调用:每个脚本都能用 require + 文件名(不含路径) 来获取到对方 exports 的对象。
var Global = require("Global");
Global.backNode = this.node;
#===============================================#
1.关闭和激活节点
this.node.active = false;
1.隐藏改节点和其下所有子节点
2.所有节点上update方法将不会执行
3.onDisable/onEnable(true)方法将被执行
2.更改父节点
this.node.parent = parentNode;
或者
this.node.removeFromParent(false);
//传入false则不会清除节点上的绑定事件和action
parentNode.addChild(this.node);
3.更改节点属性
this.node.x = 100
this.node.y = 100
或
this.node.setPosition(100, 50)
this.node.setPosition(cc.v2(100, 50));
this.node.rotation = 90;
或
this.node.setRotation(90);
this.node.scaleX = 2;
this.node.scaleY = 2;
或
this.node.setScale(2);
this.node.setScale(2, 2);
this.node.setContentSize(100, 100);
this.node.setContentSize(cc.v2(100, 100));
或
this.node.width = 100;
this.node.height = 100;
this.node.anchorX = 1;
this.node.anchorY = 0;
或
this.node.setAnchorPoint(1, 0);
mySprite.node.color = cc.Color.RED;
mySprite.node.opacity = 128;
4.常用组件接口
this.node 该组件所属的节点实例
this.enabled 是否每帧执行update方法,同时控制是否渲染显示
update(dt) enabled为true时,每帧调用
onLoad() 初始化时调用,节点添加到节点树时
start() 在第一次update之前执行,onLoad之后
lateUpdate() update会在所有动画更新前执行,在所有组件的update都执行完之后才进行操作。
onEnable()
1.enabled from false to true
2.active from false to true
3.初始时enabled==true,onLoad 之后会调用
onDisable()
1.enabled from false to true
2.active from false to true
onDestroy() 当组件或者所在节点调用了 destroy(),则会调用 onDestroy 回调,并在当帧结束时统一回收组件
#===============================================#
节点创建和销毁
1.new cc.Node() //创建节点
2.var node = cc.instantiate(this.target); //克隆节点
3.var node = cc.instantiate(this.target); //target是Prefab预制节点,创建预制节点
4.this.target.destroy(); //销毁节点
destroy 和 removeFromParent 的区别
1.调用一个节点的 removeFromParent 后,它不一定就能完全从内存中释放,因为有可能由于一些逻辑上的问题,导致程序
中仍然引用到了这个对象。因此如果一个节点不再使用了,请直接调用它的 destroy 而不是 removeFromParent。
var obj = new Sprite();
cc.log(obj instanceof Sprite); // ture
2.cc.Class 构造一个类
ctor: 构造函数(同lua)
3.简单声明
1.基本声明
properties: {
height: 20,
loaded: false
}
2.声明属性具备类型
properties: {
target: cc.Node,
pos: cc.Vec2,
}
3.声明属性是个数组,声明处可以填写类型
properties: {
bools: [cc.Boolean],
vals: [cc.Vec2],
}
4.完整声明
properties: {
score: {
default: 0,
displayName: "Score(Player)", //属性检查器中的名字
tooltip: "The socre of player" //鼠标移到参数上时
}
}
常用参数如下:
1.default: 设置默认值
2.type: 限定属性类型
3.visiable:设为false则不在属性检查其面板显示
4.serializable:设为false则不序列化改属性
5.displayName:在属性检查器中显示的名字
6.tooltip:在属性检查器中添加属性Tooltip
5.数组声明,default必须设置为[], 如果需要在 属性检查器 中编辑,则还需设置type为构造函数
properties: {
name: {
default: [],
type: [cc.String]
}
}
#===============================================#
#访问组件节点和组件(相对组件)
1.获得组件所在节点
var node = this.node;
2.获得其他组件(相对节点)
var label = this.getComponent(cc.Label);
getComponent方法也可以传入一个类型,相当于对象类型
var label = this.getComponent("cc.Label");
对于自定义组件而言,类型就是脚本名
var Test = this.getComponent("Test");
在节点上也有一个作用一样的方法,其是定义在node上
this.node.getComponent(cc.Label) == this.getComponent(cc.Label) // true
如果找不到对应组件,将返回null,然而尝试访问null值将会报错TypeError, 因此不确定组件
是否存在则可以预先判断一次。
#获得其他节点及其组件
1.可以直接在属性中通过属性检查器直接将其他节点设置进来。
2.查找子节点
var cannons = this.node.children <==> getCHildByName
如果子节点层次比较深则可以使用cc.find,他会根据传入的路径进行查找
cc.find("Cannonn01/Barrel/Sfx", this.node);
也可以直接根据名字查找(从场景根节点查找)
cc.find(Canvas/Menu/Back");
3.通过全局变量访问
windows.Global = {
backNode: null,
backLabel: null,
};
调用
Global.backNode = this.node;
4.通过模块访问
//文件 Global.js
module.exports = {
backNode: null,
backLabel: null,
}
调用:每个脚本都能用 require + 文件名(不含路径) 来获取到对方 exports 的对象。
var Global = require("Global");
Global.backNode = this.node;
#===============================================#
1.关闭和激活节点
this.node.active = false;
1.隐藏改节点和其下所有子节点
2.所有节点上update方法将不会执行
3.onDisable/onEnable(true)方法将被执行
2.更改父节点
this.node.parent = parentNode;
或者
this.node.removeFromParent(false);
//传入false则不会清除节点上的绑定事件和action
parentNode.addChild(this.node);
3.更改节点属性
this.node.x = 100
this.node.y = 100
或
this.node.setPosition(100, 50)
this.node.setPosition(cc.v2(100, 50));
this.node.rotation = 90;
或
this.node.setRotation(90);
this.node.scaleX = 2;
this.node.scaleY = 2;
或
this.node.setScale(2);
this.node.setScale(2, 2);
this.node.setContentSize(100, 100);
this.node.setContentSize(cc.v2(100, 100));
或
this.node.width = 100;
this.node.height = 100;
this.node.anchorX = 1;
this.node.anchorY = 0;
或
this.node.setAnchorPoint(1, 0);
mySprite.node.color = cc.Color.RED;
mySprite.node.opacity = 128;
4.常用组件接口
this.node 该组件所属的节点实例
this.enabled 是否每帧执行update方法,同时控制是否渲染显示
update(dt) enabled为true时,每帧调用
onLoad() 初始化时调用,节点添加到节点树时
start() 在第一次update之前执行,onLoad之后
lateUpdate() update会在所有动画更新前执行,在所有组件的update都执行完之后才进行操作。
onEnable()
1.enabled from false to true
2.active from false to true
3.初始时enabled==true,onLoad 之后会调用
onDisable()
1.enabled from false to true
2.active from false to true
onDestroy() 当组件或者所在节点调用了 destroy(),则会调用 onDestroy 回调,并在当帧结束时统一回收组件
#===============================================#
节点创建和销毁
1.new cc.Node() //创建节点
2.var node = cc.instantiate(this.target); //克隆节点
3.var node = cc.instantiate(this.target); //target是Prefab预制节点,创建预制节点
4.this.target.destroy(); //销毁节点
destroy 和 removeFromParent 的区别
1.调用一个节点的 removeFromParent 后,它不一定就能完全从内存中释放,因为有可能由于一些逻辑上的问题,导致程序
中仍然引用到了这个对象。因此如果一个节点不再使用了,请直接调用它的 destroy 而不是 removeFromParent。
2.destroy 不但会激活组件上的 onDestroy,还会降低内存泄露的几率,同时减轻内存泄露时的后果。
Creator开源游戏、插件、教程、视频汇总
Cocos所有资源列表
阅读全文
0 0
- 学习笔记脚本开发之节点与组件
- Android应用开发学习笔记之开发自定义UI组件
- Threejs开发笔记之二场景与基本组件
- 桌面组件开发学习笔记
- 桌面组件开发学习笔记
- POX学习笔记之组件注册与事件
- Metro UI CSS 学习笔记之组件(菜单与导航)
- 学习笔记之 BeanUtils组件
- 学习笔记之 DBUtils 组件
- Activity组件之学习笔记
- linux命令行与shell脚本编程大全学习笔记之—shell脚本for命令学习
- 《大象 Thinking in UML》学习笔记(五)——UML核心元素之关系、组件和节点
- jQuery学习笔记之DOM节点操作
- maya(学习笔记)之Arnold节点
- Android开发学习笔记----Activity组件
- 蓝鸥Unity开发教程之课时5 Unity组件开发之脚本组件
- CocosCreator + 场景->节点->组件=JS脚本
- 蓝鸥Unity入门脚本组件学习笔记
- oracle学习之例外
- Neutron的基本原理与代码实现
- jstl遍历集合
- thinkphp 的检测类的实例
- 不同版本oracle数据列转行
- 学习笔记脚本开发之节点与组件
- gensim 之 word2vec
- android输入金额格式化文本框金额格式控制
- 蓝桥杯 ADV-162 算法提高 题目1 最大最小值
- 微信小程序实现高亮效果
- HDU 2276 矩阵快速幂,解法:1循环矩阵31ms,2普通矩阵327ms。
- iOS-GCD定时器
- 无法识别的属性“targetFramework”解决办法
- eclipse 通过Hibernate 逆向生成实体类和映射文件