cocos 文档学习笔记(一)

tips

  • this.node.destory()和this.node.removeFromParent
    第一次接触到cocos creator的this.node.destory()是在作官方给出的事例,可是发现调用这个destory会报错,因而搜索了一下,也没有结果,可是发现了一个与他类似的东西叫作this.node.removeFromParent() 试了一下 这个倒没有出现问题。先记录一下 ,想搞明白这个destory()究竟是设么毛病。node

    感受本身解决了,拼写问题,这个坑感受还蛮大的,文档给出的是troy但我的经常使用写法为tory
  • Math.abs()
    顾名思义abs即absolute
    返回绝对值的意思
  • this.node能够得到当前组件
    得到同一个节点上的其余组件要用getComponent数组

    start: function () {
        var label = this.getComponent(cc.Label);
        var text = this.name + ' started';
    
        // Change the text in Label Component
        label.string = text;
    }
    也能够传入一个类名。对用户定义的组件来讲类名就是脚本名
    var rotate = this.getComponent("SinRotate");
  • 利用属性检查器设置组件

在上面的例子中,若是你将属性的 type 声明为 Player 组件,当你拖动节点 "Player Node" 到 属性检查器,player 属性就会被设置为这个节点里面的 Player 组件。这样你就不须要再本身调用 getComponent 啦。动画

// Cannon.js
    var Player = require("Player");

    cc.Class({
        extends: cc.Component,
        properties: {
            // 声明 player 属性,此次直接是组件类型
            player: {
                default: null,
                type: Player
            }
        },
        start: function () {
            var playerComp = this.player;
            this.checkPlayer(playerComp);
        },
        //...
    });
还能够将属性的默认值由 null 改成数组[],这样你就能在 属性检查器 中同时设置多个对象。

不过若是须要在运行时动态获取其它对象,还须要用到下面介绍的查找方法。ui

生命周期

onLoad组件脚本的初始化

通常在场景载入时触发该回调

start

第一次执行 update 以前触发。start 一般用于初始化一些中间状态的数据,这些数据可能在 update 时会发生改变,而且被频繁的 enable 和 disable。

update很关键,游戏开发的关键点

每一帧渲染物体的行为,状态,方位等。这些更新操做一般都放在update中

lateUpdate

update会在全部动画更新前执行
但若是要在动画效果如粒子效果更新以后才进行额外操做,就要放在lateUpdate中回调

onDestroy

当组件或者所在节点调用了destroy()则会调用onDestroy回调

onEnable

当组件的 enabled 属性从 false 变为 true 时,或者所在节点的 active 属性从 false 变为 true 时,会激活 onEnable 回调。假若节点第一次被建立且 enabled 为 true,则会在 onLoad 以后,start 以前被调用。

onDisable

当组件的 enabled 属性从 true 变为 false 时,或者所在节点的 active 属性从 true 变为 false 时,会激活 onDisable 回调

节点操做

  • 节点的建立、克隆、建立预制节点和销毁
  1. 建立this

    cc.Class({
        extends: cc.Component,
    
        properties: {
            sprite: {
            default: null,
            type: cc.SpriteFrame,
            },
        },
        start: function () {
            <!-- 经过new cc.Node实例化一个节点 -->
            var node = new cc.Node('Sprite');
            <!-- 将节点添加为组件 -->
            var sp = node.addComponent(cc.Sprite);
            <!-- 将组建添加到场景中 -->
            sp.spriteFrame = this.sprite;
            node.parent = this.node;
        },
    });
  2. 克隆经过cc.instantiate来完成code

    cc.Class({
            extends: cc.Component,
    
            properties: {
                target: {
                default: null,
                type: cc.Node,
                },
            },
    
            start: function () {
                var scene = cc.director.getScene();
                var node = cc.instantiate(this.target);
    
                node.parent = scene;
                node.setPosition(0, 0);
            },
        });
  3. 建立预制节点与克隆,不过type那里是cc.Prefab,我目前的理解是至关于克隆了一份预制节点
  4. 销毁节点采用this.node.destroy()便可
相关文章
相关标签/搜索