cocos 《成语接龙》---获取节点&组件的方式

本文介绍了在Cocos2d-x游戏中获取节点和组件的多种方式,包括使用cc.find()全局名称查找,谨慎使用全局变量,通过模块require实现脚本交互,以及访问子节点和使用getComponent获取组件。强调了正确和高效使用这些方法的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、获取节点:

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);

二、获取组件

可使用nodegetComponent方法,传入的参数可以是一个组件类型(如cc.Sprite),也可是一个string类型的类名(脚本名),区分大小写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值