[LayaAir 2.0]2.0下资源加载和销毁内存问题
几段代码,分别为1.0和2.0.发现一个问题,操作如下
一个按钮,点击后加载显示一张图片,再点击销毁,重复点击N此。。
例如当前curmem为18M
结果如下:
1.0下 点击显示图片,curmem增加2M为20M,再次点击销毁后回复18M,点击N次后curmem没区别。
2.0下,点击图片,curmem增加2M为20M,再次点击销毁后为20M,再次点击显示为22M,以此类推。
而 代码中的区别仅仅是
Laya.loader.clearRes(this.szurl,true); //1.0
Laya.loader.clearRes(this.szurl);//2.0
现在附完整代码,劳驾帮看下是不是我2.0版本的有什么问题。最后也附上有代码的截图,laya社区帖子编辑模式有点太低端了,发布的代码不好辨识,就附上了截图。
备注:测试图片大小为640*1038,900K
先创建一个img实例
class bitmapimg extends Laya.Image //2.0版本 这里区别为export default class bitmap extends Laya.Image
{
private szurl:string=""
constructor(url:string){
super()
this.onUrlChangeHandler(url);
}
protected onUrlChangeHandler(url:string):void
{
if(this.szurl!="") this.disp()
this.szurl=url;
if(url==null){
this.graphics.clear();
}else{
this.skin=url;
}
}
public disp(){
this.skin="";
if(this.szurl){
Laya.loader.clearRes(this.szurl,true); //***2.0这里写法为Laya.loader.clearRes(this.szurl);
}
}
public set url(value:string){
this.onUrlChangeHandler(value);
}
}
然后在首页调用
首页代码如下:
//2.0版本区别为这里需要先import bitmapimg from "./script/bitmapimg ";
private flag:boolean = false;
private bt:bitmapimg;
private oldurl:string=""
/**此处省略btn创建*/
private onClick():void
{
if(this.flag==false){
let url:string="test2/1.png"
if(this.oldurl!=url){
this.oldurl=url;
if(this.bt==null){
this.bt=new bitmapimg(url);
this.sp.addChild(this.bt)
}else{
this.bt.url=url;
}
}
this.flag=true;
}else{
this.sp.removeChild(this.bt);
this.bt.disp();
this.bt=null;
this.flag=false;
this.oldurl=""
}
}
这里代码不好认,顺便附上 截图,依次为1.0,2.0版
一个按钮,点击后加载显示一张图片,再点击销毁,重复点击N此。。
例如当前curmem为18M
结果如下:
1.0下 点击显示图片,curmem增加2M为20M,再次点击销毁后回复18M,点击N次后curmem没区别。
2.0下,点击图片,curmem增加2M为20M,再次点击销毁后为20M,再次点击显示为22M,以此类推。
而 代码中的区别仅仅是
Laya.loader.clearRes(this.szurl,true); //1.0
Laya.loader.clearRes(this.szurl);//2.0
现在附完整代码,劳驾帮看下是不是我2.0版本的有什么问题。最后也附上有代码的截图,laya社区帖子编辑模式有点太低端了,发布的代码不好辨识,就附上了截图。
备注:测试图片大小为640*1038,900K
先创建一个img实例
class bitmapimg extends Laya.Image //2.0版本 这里区别为export default class bitmap extends Laya.Image
{
private szurl:string=""
constructor(url:string){
super()
this.onUrlChangeHandler(url);
}
protected onUrlChangeHandler(url:string):void
{
if(this.szurl!="") this.disp()
this.szurl=url;
if(url==null){
this.graphics.clear();
}else{
this.skin=url;
}
}
public disp(){
this.skin="";
if(this.szurl){
Laya.loader.clearRes(this.szurl,true); //***2.0这里写法为Laya.loader.clearRes(this.szurl);
}
}
public set url(value:string){
this.onUrlChangeHandler(value);
}
}
然后在首页调用
首页代码如下:
//2.0版本区别为这里需要先import bitmapimg from "./script/bitmapimg ";
private flag:boolean = false;
private bt:bitmapimg;
private oldurl:string=""
/**此处省略btn创建*/
private onClick():void
{
if(this.flag==false){
let url:string="test2/1.png"
if(this.oldurl!=url){
this.oldurl=url;
if(this.bt==null){
this.bt=new bitmapimg(url);
this.sp.addChild(this.bt)
}else{
this.bt.url=url;
}
}
this.flag=true;
}else{
this.sp.removeChild(this.bt);
this.bt.disp();
this.bt=null;
this.flag=false;
this.oldurl=""
}
}
这里代码不好认,顺便附上 截图,依次为1.0,2.0版
没有找到相关结果
已邀请:
要回复问题请先登录
3 个回复
Aar0n
赞同来自:
187*****595
赞同来自:
Aar0n
赞同来自: