我希望我的程序删除播放器窗口中不再可见的对象以节省内存。我尝试这样的事情:
在游戏类(渲染方法)中:
if(fireDelay >= 0.4f){
Laser laser = new Laser();
laser.shoot(nave.getRotation(), nave.getX(), nave.getY());
escenario.addActor(laser);
if(laser.getLimit()){
escenario.addAction(Actions.removeActor(laser));
fireDelay = 0;
}
}
激光课程
public boolean getLimit(){
return limit;
}
@Override
public void act(float dt){
super.act(dt);
elapsedTime += dt;
distancia += dt;
setRotation(rotacion);
if(distancia == 0.4f)
limit = true;
}
但显然......不起作用......我也看到你可以用arraylist处理子弹,但是我试着这样做而且我无法得到它......¿我们怎么能做到这一点?
答案 0 :(得分:0)
我找到了解决方案!我只需要添加这行代码:
laser.addAction(Actions.sequence(Actions.delay(2), Actions.fadeOut(0.5f), Actions.visible(false)) );
在拍摄之前,将对象存储在arrayList中,然后迭代并删除它们。
removeList = new ArrayList<Laser>();
for ( Laser laser : laserList )
{
wraparound( laser );
if ( !laser.isVisible() )
removeList.add( laser );
}
for (Laser ba : removeList)
{
ba.destroy();
}
我发现它有效,因为我开始在游戏画面中随机拍摄,游戏从未变慢或冻结!