浏览器canvas模式下,播放动画图片变黑,1.42版本

上面的蝴蝶是实时改变spriteFrame播放的动画,下面的按钮是用Animation组件播放的动画,webgl模式和模拟器不会出现这种问题,canvas模式下会出现

好像有fadeIn, fadeOut动画的时候,就容易这样

canvas 是有一个 bug 来着,我当时是 hack 了,目前还没找到可能的原因 @panda

你在每次播放动画之前,调用一下下面的函数来暂时绕过这个问题吧:

    _invalidateCanvas: function () {
        // FIXME: for canvas
        if (cc._renderType === cc.game.RENDER_TYPE_CANVAS) {
            this.tileTextSprite._sgNode._renderCmd._textureToRender = null;
            this.tileTextSprite._sgNode._renderCmd._colorized = false;
        }
    },

这里面的 this.tileTextSprite. 换成你自己的 sprite 组件

1、每一个要播放动画的sprite都要调用一下这个函数吗?
2、怎么说呢,我的第一个场景才会出现这个问题,第二个场景就不会,两个场景都是有下面代码的,场景二反而没事,但是场景二是有一模一样的蝴蝶动画的
onLoad: function () {
this.node.opacity=0;
},

start:function(){
var fadein=cc.fadeIn(0.5);
this.node.runAction(fadein);
},

现在我隔了几个小时再测试,代码没改,变黑更厉害了,现在后面的背景图都会变暗了

每次有修改 color 的时候才调用一次

我把这个函数改成这样。
1、每次修改颜色是指this.node.opacity=0,
还是var fadein=cc.fadeIn(0.5);
this.node.runAction(fadein);
是执行代码行之前调用该函数还是fadein动画结束后再执行。
2、我把函数改成这样,是要传入所有(5个sprite)要播放动画的sprite依次调用这个函数吗?
背景变黑了,要不要把背景图的node也传进去调用这个函数

要对 变暗的 sprite 组件调用这个函数就行了,其他的不需要。

每次播放动画之前都调用一下。

我这个只是猜测的解决办法,有可能你的问题不一样。。。