删除对象比方说,一个图形世界,让说的世界的API和演员,我建立了一个对象,从类新名称食品从演员固有但在某些情况下,我需要这个物体从我的世界中消失。 什么应该是一个很好的方法呢?问题在Java中
我尝试这样做:
public void killFood()
{
getWorld().removeObject(this); // >>>>>Kill any object that inherate from Food and operate this method.
}
但它并没有杀死任何类型的对象从类中固有的食物......为什么?
我把它包(在食品类):
public void act()
{
if (canMove())
move();
else
killFood();
}
public boolean canMove()
{
World myWorld = getWorld();
int x = getX();
int y = getY();
y--;
// test for outside border
if (x >= myWorld.getWidth() || y >= myWorld.getHeight())
return false;
else if (x < 0 || y < 0) // if out of the 1st quarter
return false;
return true; // if inside 1st quarter & borders it can be move.
}
但该对象并没有消失,为什么?
谢谢!
============================================== ============================================ 编辑:canMove方法&蘑菇类
public boolean canMove()
{
World myWorld = getWorld();
int x = getX();
int y = getY();
// test for outside border
if (x >= myWorld.getWidth() || y >= myWorld.getHeight()) {
return false;
}
else if (x < 0 || y < 0) {
return false;
}
return true;
}
public class Mushroom extends Food
{
private final int NEED_TOGO_LEFT = 3;
private int mushroomGotDown=0; // counter for regular +1 down steps
public void move()
{
mushroomGotDown++;
// if mushroom didn't got down 2 times, go down one time.
if (mushroomGotDown != NEED_TOGO_LEFT)
setLocation(getX() , getY() + 1);
else // mushroom got down twise, third will be 1 step left.
{
setLocation(getX() - 1 , getY());
mushroomGotDown=0;
}
}
} // end of class Mushroom
没有看到removeObject()的实现,很难告诉你为什么removeObject()不起作用。 – EboMike 2011-05-10 21:59:25
您可以发布方法'removeObject'的代码? – janhink 2011-05-10 22:00:06
它在上面的API链接中... 链接:http://www.greenfoot.org/doc/javadoc/ – 2011-05-10 23:57:29