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()便可
相關文章
相關標籤/搜索