CocosCreator运用(一)

获得组件方法:只需要在组件方法里访问this.node变量:
start: function () {
var node = this.node;
node.x = 100;
}

获得其他组件:需要用到getComponent这个API:
start: function () {
var label = this.getComponent(cc.Label);
var text = this.name + ’ started’;
label.string = text;
}

如果在节点上找不到你要的组件,getComponent 将返回 null,如果你尝试访问 null 的值,将会在运行时抛出 “TypeError” 这个错误。因此如果你不确定组件是否存在,请记得判断一下:

start: function () {
var label = this.getComponent(cc.Label);
if (label) {
label.string = “Hello”;
}
else {
cc.error(“Something wrong?”);
}
}

仅仅能访问节点自己的组件通常是不够的,脚本通常还需要进行多个节点之间的交互。最直接的方式就是在 属性检查器 中设置你需要的对象。以节点为例,这只需要在脚本中声明一个 type 为 cc.Node 的属性:
cc.Class({
extends: cc.Component,
properties: {
// 声明 player 属性
player: {
default: null,
type: cc.Node
}
}
});
这里声明了一个player属性,默认值为null,并且指定对象为cc.node。接着你就可以将层级管理器上的任意一个节点拖到这个 Player 控件,这样一来它的 player 属性就会被设置成功,你可以直接在脚本里访问 player:
var Player = require(“Player”);

cc.Class({
extends: cc.Component,
properties: {
// 声明 player 属性
player: {
default: null,
type: cc.Node
}
},

start: function () {
    var playerComp = this.player.getComponent(Player);
    this.checkPlayer(playerComp);
},

// ...

});

有时候,游戏场景中会有很多个相同类型的对象,像是炮塔、敌人和特效,它们通常都有一个全局的脚本来统一管理。如果用 属性检查器 来一个一个将它们关联到这个脚本上,那工作就会很繁琐。为了更好地统一管理这些对象,我们可以把它们放到一个统一的父物体下,然后通过父物体来获得所有的子物体:
cc.Class({
extends: cc.Component,

start: function () {
    this.cannons = [];
    this.cannons = this.node.getChildren();
}

});
全局名字查找:当 cc.find 只传入第一个参数时,将从场景根节点开始逐级查找:
this.backNode = cc.find(“Canvas/Menu/Back”);

通过全局变量访问,试着定义一个全局对象 window.Global,这个对象里面包含了 backNode 和 backLabel 两个属性:
window.Global = {
backNode: null,
backLabel: null,
};
由于所有脚本都强制声明为 “use strict”,因此定义全局变量时的 window. 不可省略。
接着你可以在合适的地方直接访问并初始化 Global:
cc.Class({
extends: cc.Component,

onLoad: function () {
    Global.backNode = this.node;
    Global.backLabel = this.getComponent(cc.Label);
}

});
初始化后,你就能在任何地方访问到 Global 里的值:
cc.Class({
extends: cc.Component,

// start 会在 onLoad 之后执行,所以这时 Global 已经初始化过了
start: function () {
    var text = 'Back';
    Global.backLabel.string = text;
}

});

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值