您的位置:首页 > 移动开发 > Cocos引擎

cocosSteator整理

2016-07-18 19:11 363 查看
事件处理是在节点(cc.Node)中完成的。对于组件,可以通过访问节点 this.node 来注册和监听事件。监听事件可以 通过 this.node.on() 函数来注册,方法如下:

cc.Class({

  extends: cc.Component,

  properties: {

  },

  onLoad: function () {

    this.node.on('mousedown', function ( event ) {

      console.log('Hello!');

    });

  }, 

});

获得组件所在的节点很简单,只要在组件方法里访问 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';

        // Change the text in Label Component

        label.string = text;

    }

  查找子节点

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

// CannonManager.js

cc.Class({

    extends: cc.Component,

    start: function () {

        this.cannons = [];

        this.cannons = this.node.getChildren();

    }

});

这里的 getChildren 是 cc.Node 原有的一个 API,可以获得一个包含所有子节点的数组。

还可以使用 getChildByName:

this.node.getChildByName("Cannon 01");

如果子节点的层次较深,还可以使用 cc.find,cc.find 将根据传入的路径进行逐级查找:

cc.find("Cannon 01/Barrel/SFX", this.node);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: