问一个官方demo的问题

 spawnNewStar: function() {
        var newStar = null;
        // 使用给定的模板在场景中生成一个新节点
        if (this.starPool.size() > 0) {
            newStar = this.starPool.get(this); // this will be passed to Star's reuse method
        } else {
            newStar = cc.instantiate(this.starPrefab);
        }
        // 将新增的节点添加到 Canvas 节点下面
        this.node.addChild(newStar);
        // 为星星设置一个随机位置
        newStar.setPosition(this.getNewStarPosition());
        // pass Game instance to star
        newStar.getComponent('Star').init(this);
        // start star timer and store star reference
        this.startTimer();
        this.currentStar = newStar;
    },

    despawnStar (star) {
        this.starPool.put(star);
        this.spawnNewStar();
    },

    startTimer: function () {
        // get a life duration for next star
        this.starDuration = this.minStarDuration + cc.random0To1() * (this.maxStarDuration - this.minStarDuration);
        this.timer = 0;
    },

这里

despawnStar (star) {
        this.starPool.put(star);
        this.spawnNewStar();
    },

这里做了什么操作?这是一种定义函数的写法吗?

Pool我记得是对象池,应该是把star放进对象池,还有请问下是在哪个demo

制作一个游戏的最下面的最终demo。
starPool我知道是什么意思。
只要是这个despawnStar(star) {}
这个不太懂,这是一种函数的写法吗?

是的,(应该)等价于

   despawnStar : function (star){

    }

:grin: ok。谢谢

那为什么这个demo里,要分两种写法呢?有什么差别吗?

没有差别,你愿意用哪个就用哪个

:grin:好的。
正好一起再问你一个问题。
1、使用cc.find以及getComponent可以找到节点上的组件,然后去执行函数或者改变一个属性,
2、通过全局变量,也可以调用任意js中的函数或者改变属性。
3、通过require应该也可以达到上面两个的功能,但是这个我没怎么用过。
这三种方式适应的使用环境应该是什么样的?在什么情况下使用某一种方法会更好?