Creator 版本号:1.4.2
运行时目标平台:(iOS/Android/模拟器)
1.4.0 升级 1.4.2 后出现问题
renderTexture.saveToFile的参数变了,最后一个保存完图片的回调不见了,这样我不能确定什么时候执行分享,求解答
查看一下参数,常量名边话了,但是,常量的数字还在。
把常量名直接换成数字,就可以正常调用了。
不知道常量对应的数字的话
恢复到1.4.0,然后输出一下,然后在升级回1.4.1。
或者构建一个default,然后看C++里面接受的参数。
对啊,参数怎么改了。。
msg:Error: js_cocos2dx_RenderTexture_saveToFile : wrong number of arguments
另外,我一直担心一个问题:如果游戏已经上线,使用热更新,是不是意味着不能使用升级后的引擎版本来做更新包,因为新版本中有些接口已经改了,在旧版本引擎上没有,会崩掉。
游戏引擎更新了,就不能热更新了,可能会出问题,比如接口变了
参数到底变成什么了,官方人员不说明下么
看了一下接口没动啊,你的代码是什么样的?
saveToFile(filename, isRGBA, callback);
真的有问题,我升到1.4.2后专门测试了下
xcode
msg:Error: js_cocos2dx_RenderTexture_saveToFile : wrong number of arguments
而且有时候还是会把截图的节点移动到左下角,
所以我的问题是你的调用代码是什么,一直都没人说啊
if (CC_JSB) {
//如果待截图的场景中含有 mask,请使用下面注释的语句来创建 renderTexture
// var renderTexture = cc.RenderTexture.create(1280,640, cc.Texture2D.PIXEL_FORMAT_RGBA8888, gl.DEPTH24_STENCIL8_OES);
var renderTexture = cc.RenderTexture.create(1920, 1080);
//实际截屏的代码
renderTexture.begin();
//this.richText.node 是我们要截图的节点,如果要截整个屏幕,可以把 this.richText 换成 Canvas 切点即可
this.node._sgNode.visit();
renderTexture.end();
renderTexture.saveToFile("demo.png", cc.IMAGE_FORMAT_PNG, true, function () {
cc.log("capture screen successfully!");
var pathName = jsb.fileUtils.getWritablePath() + 'demo.png';
cc.find('Canvas/New Label').getComponent(cc.Label).string = pathName;
if (cc.sys.os === cc.sys.OS_ANDROID) {
}
if (cc.sys.os === cc.sys.OS_IOS) {
}
});
//打印截图路径
cc.log(jsb.fileUtils.getWritablePath() + '/demo.png');
}
发了代码了
这个 CONST 不对,应该是 cc.ImageFormat.PNG
不要用任何以前 cc 下的常量,遇到不知道的査 API 文档
换成cc.ImageFormat.PNG后,1.4.2 可以保存了
我现在更换引擎,删除 build 文件夹,重新构建编译,然后把之前的runtime-src 覆盖现在的,是不是就可以了,那样就不用重新接SDK了
工程在小版本中一般不会有大变化,但是大版本之间变化还是很大的。。。可以用文本合并工具来比较新创建的 runtime-src 和旧版本中的 runtime-src
var texture = new cc.RenderTexture(Math.floor(size.width), Math.floor(size.height), cc.Texture2D.PIXEL_FORMAT_RGBA8888, gl.DEPTH24_STENCIL8_OES);
这样创建的texture在安卓可以截图,ios则无法执行,请问是怎么回事?
休整一下,新的应该是gl.DEPTH_STENCIL