在greenfoot的一个项目上工作,我有一辆四处行驶的汽车,但我想使其减速,因此我将使用Greenfoot.delay(1);。但这延迟了我的整个场景。只能推迟上这一辆车吗?谢谢
答案 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
。其余的作为练习留给读者。 ;-)