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端点击那里会触发下载图片呢?
你好 你的代码可行 但只支持web端的canvas 如果是webgl该怎么办
我也希望官方能给一个api接口。现在webgl下没法操作,没有什么接口把spriteframe转化成base64.
这个功能一致需求强烈,可惜一些杠精总说这不该是引擎组的工作,也不想想有多少开发者是全栈的啊,
问题是至少给开发者提供数据呀。现在webgl模式下,没法把spriteframe转化成base64。
现在creator默认是webgl模式,结果截屏后的图片没有相应的接口不能转化成base64,现在fb小游戏的分享都是base64 image
刷日常一次。
现在webgl模式下,没法把spriteframe转化成base64。
截屏都截不了,别说是转成base64了。。。。网上找了很久,都是2年前的方法,接口全变了,根本没法弄。。。。
cc._canvas.toDataURL()
截屏出来的是黑屏,没有画面
这是为什么