动态创建prefab再放入nodepool出错

直接上代码,代码里的common.log请等同于cc.log

    onLoad: function() {
        let me = this;
        cc.loader.loadRes("MjTile", function(err, prefab) {
            if (err)
                throw err;
            me.MjTile = prefab;
            //缓冲麻将子组件;
            me.MjTilePool = new cc.NodePool();
            let initCount = 5;
            for (let i = 0; i < initCount; ++i) {
                common.log(1);
                me.MjTilePool.put(cc.instantiate(me.MjTile));
                common.log(2);
            }
        });
    },

我用模拟器运行出现的结果就是一下出错信息,出错的部分还不是红字。
Simulator : Monday, July 04, 2016 14:59:37 1
Simulator : ERROR : getComponent: Type must be non-nil
Simulator : Monday, July 04, 2016 14:59:37 2
Simulator : Monday, July 04, 2016 14:59:37 1
Simulator : ERROR : getComponent: Type must be non-nil
Simulator : Monday, July 04, 2016 14:59:37 2
Simulator : Monday, July 04, 2016 14:59:37 1
Simulator : ERROR : getComponent: Type must be non-nil
Simulator : Monday, July 04, 2016 14:59:37 2
Simulator : Monday, July 04, 2016 14:59:37 1
Simulator : ERROR : getComponent: Type must be non-nil
Simulator : Monday, July 04, 2016 14:59:37 2
Simulator : Monday, July 04, 2016 14:59:37 1
Simulator : ERROR : getComponent: Type must be non-nil
Simulator : Monday, July 04, 2016 14:59:37 2

然后cc.instantiate(me.MjTile)这里我确定没有返回空,因为用这个已经可以生成prefab并显示出来了。

这个报错是因为没有指定缓冲池处理组件

这个错误不是红色的原因是目前它是无害的,不影响 NodePool 的核心功能。

不过我可以理解报错的恼人之处,所以下个版本会添加一些防御性代码,在这种情况下不再提示错误。