[]sprite.drawToCanvas绘制纹理无法释放内存资源

之前用的LayaAirSdk(1_7_13_beta)版本,没有任何问题
但是升级到LayaAirSdk(1_7_18)和1.7.18以上的版本,出现2个问题。
1. 无法释放内存的问题
2. 有些时候看不到绘制的图片显示在界面上,代码都是一样的,但什么都看不到
上面2个问题在1.7.13beta版本不会出现
调用下面3个destory方法,内存还是无法释放
texture.destroy()
sprite.destroy()
htmlC.destroy()

已邀请:

guozhaokui

赞同来自:

多谢提供的demo。已经修改了,可以等下次版本发布,或者自己去修改下面两个地方
--- a/libs/laya/src/laya/webgl/WebGL.as
+++ b/libs/laya/src/laya/webgl/WebGL.as
@@ -262,8 +262,8 @@ package laya.webgl {
if (canvasWidth <= 0 || canvasHeight <= 0) {
trace("[error] canvasWidth and canvasHeight should greater than zero");
}
- offsetX -= sprite.x;
- offsetY -= sprite.y;
+ //offsetX -= sprite.x;
+ //offsetY -= sprite.y;

//把参数强转成int
canvasWidth |= 1; canvasHeight |= 1; offsetX |= 1; offsetY |= 1;
--- a/libs/laya/src/laya/webgl/resource/WebGLCanvas.as
+++ b/libs/laya/src/laya/webgl/resource/WebGLCanvas.as
@@ -70,6 +70,7 @@ package laya.webgl.resource {
override public function destroy():void {
_ctx && _ctx.destroy();
_ctx = null;
+ super.destroy();
}

public function get context():Context {
即 
WebGL.as 注释掉265,266
WebGLCanvas.as 在 destroy()函数的最后加 super.destroy();

Aar0n

赞同来自:

webgl 还是 canvas ?

bingqimao

赞同来自:

这个demo,两个问题都重现了
自己的项目,有些情况下能看到绘制的图片,有些情况下不行
可以试试用LayaAirSdk(1_7_13_beta)和LayaAirSdk(1.7.19.1_beta)进行测试
1.7.13没有任何问题

该问题目前已经被锁定, 无法添加新回复

商务合作
商务合作