1.0的版本有
RenderTexture.begin();
sprite.visit();
RenderTexture.end();
2.0的Graphics倒是可以画线条但没办法直接使用图片进行画
参照相机截图的方法写了一个
this.createSprite();
var img = this.initImage();
let texture = new cc.Texture2D();
texture.initWithElement(img);
let spriteFrame = new cc.SpriteFrame();
spriteFrame.setTexture(texture);
this.show_img.spriteFrame = spriteFrame;
移动的时候,一直采集相机的图片数据,然后生成img,再设置给精灵
但好卡呀,而且效果不怎么好
有没什么好的方法,请教一下
相关的几个方法
init () {
this.label.string = ‘’;
let texture = new cc.RenderTexture();
let gl = cc.game._renderContext;
texture.initWithSize(cc.visibleRect.width, cc.visibleRect.height, gl.STENCIL_INDEX8);
this.camera.targetTexture = texture;
this.texture = texture;
},
initImage () {
var dataURL = this._canvas.toDataURL(“image/png”);
var img = document.createElement(“img”);
img.src = dataURL;
return img;
},
createSprite () {
let width = this.texture.width;
let height = this.texture.height;
if (!this._canvas) {
this._canvas = document.createElement(‘canvas’);
this._canvas.width = width;
this._canvas.height = height;
}
else {
this.clearCanvas();
}
let ctx = this._canvas.getContext(‘2d’);
this.camera.render();
let data = this.texture.readPixels();
let rowBytes = width * 4;
for (let row = 0; row < height; row++) {
let srow = height - 1 - row;
let imageData = ctx.createImageData(width, 1);
let start = srow * width * 4;
for (let i = 0; i < rowBytes; i++) {
imageData.data[i] = data[start + i];
}
ctx.putImageData(imageData, 0, row);
}
return this._canvas;
}
