关于节点 截图位置偏移问题解决方案1

平时如果对某个节点进行截图,会出现偏移的问题。我们可以先采用调整位置然后再截屏再调整回来。具体代码如下
capNode为要截图的节点

var texture = new cc.RenderTexture(capNode.width, capNode.height, cc.Texture2D.PIXEL_FORMAT_RGBA8888, gl.DEPTH24_STENCIL8_OES); // 新建渲染纹理
var pos = capNode.convertToWorldSpaceAR(cc.v2(0, 0));
var viewPort = capNode.getNodeToWorldTransform();//重要代码!!!
capNode.x -= viewPort.tx;
capNode.y -= viewPort.ty;
texture.setPosition(pos);
texture.begin(); // 开始渲染
capNode._sgNode.visit(); // 访问当前节点

texture.end(); // 渲染结束
texture.saveToFile(fileName, cc.ImageFormat.PNG, true, function () {
    if (isAction) {
        var node = new cc.Node();
        var sp = node.addComponent(cc.Sprite);
        var tex = cc.director.getTextureCache().addImage(fullPath)
        var frame = new cc.SpriteFrame(tex);
        sp.spriteFrame = frame;
        node.x = pos.x;
        capNode.x += viewPort.tx;
        capNode.y += viewPort.ty;
        node.y = pos.y;
        var layer = cc.popupMgr.getInstance().getTopLayer();
        node.parent = layer;

    } else {
        if (callBack) callBack(fullPath);
    }
1赞