我需要在游戏中多次更改“图像”的纹理。
Image image;
stage1.AddActor(image);
image = new Image(texture1);
image = new Image(texture2);
image = new Image(texture1);
image = new Image(texture2);
...
这是对的吗?我是否会在记忆中收集garbade? 使用一些如下图像不舒服:
image1=new Image(texture1);
image2=new Image(texture2);
image1.visible=true;
image2.visible=false;
...
image1.visible=false;
image2.visible=true;
....
感谢。
答案 0 :(得分:2)
是:
Image image;
image = new Image(texture1);
image = new Image(texture2); //new Image(texture1) can now be GC'ed
但请注意,只有在无法访问时才会收集垃圾。因此,如果您在列表中引用new Image(texture1)
,则会阻止垃圾收集器完成其工作。
答案 1 :(得分:1)
Image image;
image = new Image(texture1);
image = new Image(texture2);
image = new Image(texture1);
image = new Image(texture2);
是更好的方法,因为当您image = new Image(texture2);
以上时new Image(texture1);
符合GC的条件,假设它无法访问。
当GC发生并且对象将被GC负责时,JVM负责。