关于使用cc.RenderTexture截屏,目标节点发生位移的bug

图2

图3

图4

图5

描述:
代码如图1,编辑器如图2。图片锚点为cc.p(0.5,0.5)。

bug表现:

  • 打开红框内注释,目标节点会移到左下角,如图3,截图结果如图4。截图后重新设置坐标点、截图前置锚点为左下角,均无用
  • 关闭红框内注释,目标节点无位移,但是截图结果为空,如图5

这意思是只有锚点和坐标点均为左下角的节点才能完美截图?
但是我想截任意节点的图,求大神指导

瞧一瞧看一看啰

  1. sgNode 在 visit 时,坐标系是世界坐标系,render texture 在渲染时,使用的 viewport 同样也是游戏 viewport,其实不适用于局部截图
  2. 如果你只想截取部分内容,其实改变了坐标系,最简单的方法是在添加 render texture 到 targetNode.parent 后,调整 targetNode._sgNode 的位置
1赞

盼望能出一个可对任意局部截图的组件。

可以参考这个,可以任意位置截图并且缩放。
http://forum.cocos.com/t/topic/56692

我现在就是这样做的,先调整位置,再截图,然后再恢复位置。但是恢复位置好像必须在下一帧,不然就截不到。
let sq = cc.sequence(cc.delayTime(0.01),cc.place(pt))
targetNode.runAction(sq)
我现在是用这种延时的方式,会出现明显的跳帧。

请问有什么精确的让目标语句在下一帧执行的方法吗?

谢谢指教

scheduleOnce(function () {}, 0);

2.0 正在制作截图的组件,RenderTexture 到时会被废弃

6赞

我之前测试了,这样做,有一定概率本帧执行,所以我才写成0.01

请问楼主最后怎么解决的~

板凳已经准备好,坐等2.0.

期待2.0