现在有一个需求是截取当前屏幕游戏内容作为游戏存档的预览画面,请问现在creator现在掉什么方法可以截屏
请高手指点,谢谢!
目前没有截屏接口
后续会添加吗?
原生的有办法吗?
原生的就不清楚了…
可以的,用cc.RenderTexture
var render = new cc.RenderTexture(width, height);
render.begin();
this.node._sgNode.visit();
render.end();
render.saveToFile(“1.png”, cc.IMAGE_FORMAT_PNG);
rendertexture api没查到 从哪能看到具体用法和其他方法···?
http://www.cocos2d-x.org/reference/html5-js/V3.8/index.html, 左上搜索框输入rendertexture就找到了。
我上面那段代码creator里测试过了。可以把this.node从(0,0)到(width, height)截取到模拟器目录
CocosCreator\resources\cocos2d-x\simulator\win32下的1.png。你要截全屏的话把这段代码挂在场景根节点下就可以了。RenderTexture扩展的是cc.Node,你也可以setPosition去截屏幕的不同部分。
我这边用rendertexture的时候 为什么new之后获得的是一个class? = = 我想用这个试试橡皮擦的功能 你那边也是这样么?
我试了下也是class,它扩展的是原来cocos2dx js里的cc.Node,不是Creator里新的cc.Node。你看它文档里的api能用就行。
嗯嗯 这个现在只能在原生用 web用不了 会报个错
截屏功能能放到roadmap中去吗?功能需求挺强烈的
截屏我弄过,兼容Web和JSB,以下是代码(TypeScript版本,去掉类型就是js):
/**
* 捕捉屏幕作为一个PNG文件保存在路径filename
*/
public static captureScreenshot(filename: string): void {
if (this.isWebPlayer) {
var canvas: HTMLCanvasElement = <HTMLCanvasElement>document.getElementById("gameCanvas");
var base64: string = canvas.toDataURL("image/png");
var href: string = base64.replace(/^data:image[^;]*/, "data:image/octet-stream");
var aLink: HTMLAnchorElement = document.createElement('a');
aLink['download'] = filename;
aLink.href = href;
var evt = document.createEvent("HTMLEvents");
evt.initEvent("click", false, false);
aLink.dispatchEvent(evt);
}
else {
var size: cc.Size = cc.view.getVisibleSize();
var texture: cc.RenderTexture = new cc.RenderTexture(size.width, size.height, cc.IMAGE_FORMAT_PNG);
texture.begin();
cc.director.getRunningScene().visit();
texture.end();
texture.saveToFile(filename, cc.IMAGE_FORMAT_PNG);
}
}
我刚才用了下这个 好像没截下来 就算截屏下来的话 会保存到哪里啊??、
模拟器的默认写路径是:CocosCreator安装目录\resources\cocos2d-x\simulator\win32。去这个目录下看一下吧。
去掉类型,
比如
var size=cc.view.getVisibleSize();
var texture =new cc.RenderTexture(size.width,size.height,cc.IMAGE_FORMAT_PNG);
web端点击那里会触发下载图片呢?
