【问题标题】:Greenfoot Actor not in World error绿脚演员不在世界错误
【发布时间】:2015-08-02 14:35:02
【问题描述】:

当我的敌人到达屏幕底部时我想移除它,如果敌人被子弹击中我想要移除它。错误是:java.lang.IllegalStateException:Actor 不在世界中。尝试使用不在世界上的演员的位置。要么尚未插入,要么已被移除。

我认为问题是因为有两次调用 removeObject 或 getOneIntersectingObject 方法导致错误。我该如何解决这个问题?

这是导致错误的代码

public class Enemy extends Actor
{
    public void act() 
    {
        setLocation(getX(), getY() + 3);
        if (getY() > getWorld().getHeight() + 30 )
            getWorld().removeObject(this);
        Actor fire = getOneIntersectingObject(Fire.class);
        if(fire != null) 
            getWorld().removeObject(this);
    }    
}

【问题讨论】:

    标签: object actor greenfoot


    【解决方案1】:

    Greenfoot 不允许在角色被移除后与世界进行任何交互。如果您的 Y 坐标导致 this 在第一个 if 语句中从世界中移除,那么之后调用 getOneIntersectingObject 是错误的。

    有几种方法可以解决这个问题:您可以将随后的行包装在 else 子句中,如果您在第一个 if 中删除自己,您可以提前创建 return,或者您可以使用 boolean 标志跟踪您是否要删除自己,但仅将删除作为 act() 方法中的最后一项。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-03
      • 1970-01-01
      • 2014-07-05
      • 1970-01-01
      相关资源
      最近更新 更多