cocos2d-js中先bake后添加childnode好还是先添加childnode再bake更好?

发布于 2022-09-02 00:35:47 字数 1964 浏览 18 评论 0

官方说明中写道:

使用bake功能非常简单: 将需要bake的节点元素加入到一个cc.Layer或其子类(cc.LayerColor,cc.LayerGradient)对象中,然后调用该对象的bake函数就可以了。

但是我在项目的js-test文件夹中,BakeLayerTest.js中的BakeLayerTest1中,是先bake然后再addchild的:

ctor: function(){
        this._super();

        var winSize = cc.winSize;
        var bakeItem = new cc.MenuItemFont("bake", this.onBake, this);
        var unbakeItem = new cc.MenuItemFont("unbake", this.onUnbake, this);
        var runActionItem = new cc.MenuItemFont("run action", this.onRunAction, this);
        var menu = new cc.Menu(bakeItem, unbakeItem, runActionItem);

        menu.alignItemsVertically();
        menu.x = winSize.width - 70;
        menu.y = winSize.height - 120;
        this.addChild(menu, 10);

        var rootLayer = new cc.Layer();
        rootLayer.setPosition(20,20);
        this.addChild(rootLayer);

        var bakeLayer = new cc.Layer();
        bakeLayer.bake();
        bakeLayer.setRotation(30);
        rootLayer.addChild(bakeLayer);

        for(var i = 0; i < 9; i++){
            var sprite1 = new cc.Sprite(s_pathGrossini);
            if (i % 2 === 0) {
                sprite1.setPosition(90 + i * 80, winSize.height / 2 - 50);
            } else {
                sprite1.setPosition(90 + i * 80, winSize.height / 2 + 50);
            }
            if(i === 4)
                this._actionSprite = sprite1;
            sprite1.rotation = 360 * Math.random();
            bakeLayer.addChild(sprite1);
        }
        this._bakeLayer = bakeLayer;
        bakeLayer.runAction(cc.sequence(cc.moveBy(2, cc.p(100,100)), cc.moveBy(2, cc.p(-100,-100))));
    },

使用哪种方式会更好呢?他们之间的差别是什么?又或者两者没有啥差别,除了顺序。


刚刚用(new Date()).getTime()输出了下,先add再bake,先bake再add之间都说1毫秒或者2毫秒之间摆动……没啥差别,我真是无语了。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文