spine动画截图显示异常

  • Creator 版本: 2.3.4

  • 目标平台: 谷歌浏览器/ iOS / Android /

  • 重现方式:必现

我通过官方的截图demo实现了全屏截图,具体代码为
let camera = cc.director.getScene().getComponentInChildren(cc.Camera);
if (camera && (sprite instanceof cc.Sprite)) {
let texture = new cc.RenderTexture();
texture.initWithSize(cc.winSize.width, cc.winSize.height, cc.game._renderContext.STENCIL_INDEX8);

        let spriteFrame = new cc.SpriteFrame();
        spriteFrame.setTexture(texture);

        sprite.spriteFrame = spriteFrame;
        //因为截图是反的,所以旋转一下scaleY
        sprite.node.scaleY = - Math.abs(sprite.node.scaleY);

        camera.cullingMask = 0xffffffff;
        camera.targetTexture = texture;
        camera.render();
        camera.targetTexture = null;
    }

在截图的时候,如果截图内容包含透明度变化的spine动画的时候,会将透明度变化那里直接显示为黑色,请问下这种情况如何解决,或者有遇到的帮忙提供下思路。

我也遇到了这个问题,请问解决了吗?

RB_FMT_S8 换成 RB_FMT_D24S8,然后摄像机里面 backgroundColor 中把透明度设置为 0 试试。

2.1.2版本中,摄像机里面的clearColor的透明度设置对应的是什么呢?只找到了backgroundColor、clearFlags两个貌似的属性。而且backgroundColor设置为透明后,也是无效的,黑边依然存在

楼主的问题可能不是黑边,而是截图中把黑色背景也截取出来了。

我这的问题已解决,你可以试一下将截图的Sprite的混合模式改一下,源是cc.macro.BlendFactor.DST_ALPHA,目标是cc.macro.BlendFactor.ONE_MINUS_DST_ALPHA

多谢大大,按照你说的,黑边没了。但又有了新的问题,背景变成黑的了,而且透明度设置无效,这个该怎么解决呢?

这个问题就是摄像机的问题了,你参考下其他人的回复吧

仍然非常感谢