一、获取节点:
1.全局名称查找:
使用cc.find()函数,此函数通过指定路径查找节点。
第一个参数是个字符串,为指定路径,区分大小写。
第二个参数是个节点对象,为相对节点。
若只传入第一个参数,将从场景根节点开始逐级查找;
若传入第二个参数,则从指定的节点(第二个参数)开始查找。
如下:
this.backNode = cc.find("Canvas/Menu/Back");
2.全局变量访问
你应当很谨慎地使用全局变量,当你要用全局变量时,应该很清楚自己在做什么,我们并不推荐滥用全局变量,即使要用也最好保证全局变量只读。
访问全局变量时,如果变量未定义将会抛出异常。
添加全局变量时,请小心不要和系统已有的全局变量重名。
你需要小心确保全局变量使用之前都已初始化和赋值。
3.通过模块访问
如果你不想用全局变量,你可以使用 require 来实现脚本的跨文件操作,如下:
// Global.js, now the filename matters
module.exports = {
backNode: null,
backLabel: null,
};
每个脚本都能用 require + 文件名(不含路径) 来获取到对方 exports 的对象。
// AnyScript.js
// this feels more safe since you know where the object comes from
var Global = require("Global");
cc.Class({
extends: cc.Component,
// start 会在 onLoad 之后执行,所以这时 Global 已经初始化过了
start: function () {
var text = "Back";
Global.backLabel.string = text;
}
});
4.查找子节点
(1)可以通过children属性访问所有子节点;
(2)可以通过getChildByName方法,example:
this.node.getChildByName("Cannon 01");
如果子节点的层次较深,你还可以使用 cc.find,cc.find 将根据传入的路径进行逐级查找:
cc.find("Cannon 01/Barrel/SFX", this.node);
二、获取组件
可使用node的getComponent方法,传入的参数可以是一个组件类型(如cc.Sprite),也可是一个string类型的类名(脚本名),区分大小写。