混合模式问题

var animFrames = resConfig.getFramesByResObj(resObj);
var animation = cc.Animation.create(animFrames, 0.1);
var runningAction = new cc.RepeatForever(new cc.Animate(animation));
var sprite = new cc.Sprite();
this.addChild(sprite);
sprite.runAction(runningAction);
sprite.setBlendFunc(cc.ONE_MINUS_DST_COLOR, cc.ONE);

为什么序列帧没有混合效果,如果sprite的图片确有混合效果,想要序列帧也有混合效果怎么处理?

没有人知道吗?坐等大神

应该是要起作用才对,你是JSB还是web?

我看了一下代码,Sprite在setTexture的时候,如果_texture改变了,会通过调用updateBlendFunc,重设blendfunc值。你是通过runAction来setSpriteFrame,在setTexture的时候,已经是下一次帧以后的事了,这样就会被updateBlendFunc覆盖掉你的setBlendFunc。

你可以通过初始化Sprite的时候,就setSpriteFrame,这样_texture就可以早一点赋值,一般你的动画都放在一个大图里的,所以每次setSpriteFrame,spriteframe里面的texture都是同一个东西~ (这是一种workaround的解决方法,官方应该引导好正确的用法)

应该是这样~

jsb,没有效果

是不是我要自己做定时器去改变序列帧的frame,这样肯定是可以的,就不能用action来播放序列帧动画了

你说的是对的,非常感谢,提前设置之后,texture就不会再次改变,也就不会把混合模式覆盖了