“3.0中不鼓励使用SpriteBatchNode”,适用于cocos2d-js v3.3吗?

虽然这里说明了 3.0中BatchNode使用的修改:
https://github.com/fusijie/Cocos2d-x3.0-Release-Note/blob/master/cocos2d-x_v3.0_release_notes.md#user-content-sprite-和-spritebatchnode

但我在cocos2d-js v3.3中试了下,发现在Sprite中添加同一纹理的Sprite子节点,还是会出现drawcall增加的问题,请问大家也有这个疑问吗?

类似如下实验性代码:

var ShipSprite = cc.Sprite.extend({

ctor:function(){
    this._super("#role0.png");
    this.init();
},

init: function () {
    this.addChild(new cc.Sprite("#role1.png"));
    this.addChild(new cc.Sprite("#role1.png"));
    this.addChild(new cc.Sprite("#role1.png"));
    this.addChild(new cc.Sprite("#role1.png"));
}

});

我刚才在JSBinding中测试了下,同样的代码,JSBinding中只有一次drawcall,而html5中有8次(其中5个是我添加的5张图片,3个是左下角的三条信息(帧率等)),求解啊????
难道cocos2d-js 发布html5,不支持这个特性?

在Canvas渲染模式下,如果cc.SpriteBatchNodeCanvas包括子节点,那么它的特性将和一个普通的结点相同

谢谢指导!
我在API文档里也找到这句话了:


在Canvas渲染模式下,如果cc.SpriteBatchNodeCanvas包括子节点,那么它的特性将和一个普通的结点相同
如果它的_useCache被设置为true,就可以缓存所有SpriteBatchNode的子节点到画布中
(这就是通常所说的“批量渲染”)

只是我这里还有两个问题:

1)也就是说在Canvas渲染模式下,就没有批量渲染这个功能了吗? 另外,_useCache是属于什么的字段,_useCache应该不是cocos2d-js中的字段吧(因为我在引擎源代码中都没找到这个字段)

2)如果在WebGL渲染模式下,是否可以使用cocos2d-x 3.0的新优化(用Sprite作为父节点,代替SpriteBatchNode(就是我这个帖子问的第一个问题)),如果可以的话,我的代码为什么会在已经开启了webgl的chrome浏览器里drawcall数目却没有批量渲染

非常感谢指导,盼回!

请问一下lz 是不是因为cocos2d-js的html5版本和原生接口不兼容的原因啊?
我在开发的时候到底需不需要使用SpriteBatchNode?

我也有同样的疑问,一开始我以为sprite的新特性能在h5游戏中会起作用,结果是no,然后我就用batchNode-----nnd—依然不起作用。
后来看到你这个帖子明白了一个道理-------------------在Canvas渲染模式下,如果cc.SpriteBatchNodeCanvas包括子节点,那么它的特性将和一个普通的结点相同!!!!!!!!
但是又有你个移动浏览器真正支持webgl啊,我发现我的游戏只有在苹果的浏览器中跑的很顺畅,因为这些特性起作用,在安卓中就悲剧了

再说一句这么好的帖子怎么沉了

同问 ActionTimeLine动画的node节点如何批量渲染?