我可以只在Greenfoot延迟一堂课吗?

时间:2019-03-26 14:05:02

标签: java greenfoot

在greenfoot的一个项目上工作,我有一辆四处行驶的汽车,但我想使其减速,因此我将使用Greenfoot.delay(1);。但这延迟了我的整个场景。只能推迟上这一辆车吗?谢谢

2 个答案:

答案 0 :(得分:0)

您可能有一个带有update和draw方法的循环。 update方法负责更新实体的内部状态,而draw方法用于在屏幕上绘制当前状态。

您可以通过在每次更新时简单地降低其移动速度来降低汽车的速度,例如:

Position position = car.getPosition();

/*
 * Simply take a lower value to move the car. For example, 5.
 */

oldPosition.setX(position.getX() + 10);
oldPosition.setY(position.getY() + 10);

仅通过添加延迟来解决问题就不会像您已经提到的那样起作用,因为那样会延迟整个循环。

答案 1 :(得分:0)

要放慢Greenfoot中的演员,通常需要添加一个计数器:

class MyActor extends Actor
{
    private static final int NUMBER_OF_ACTS_PER_STEP = 3;
    private int numberOfActs = 0;

    public void act() {
        numberOfActs++;
        if (numberOfActs < NUMBER_OF_ACTS_PER_STEP) {
            return;
        }
        numberOfActs = 0;
        // do whatever you need to do slower
    }
}

如果您需要比整数倍更好的分辨率,则可以使用double代替int。其余的作为练习留给读者。 ;-)