Java 如何生成一个减少数字的函数(例如,从800毫秒减少到200毫秒)
计时器设置为800毫秒的周期,因此always RandomPositions()将每隔800毫秒(该周期)执行一次内部代码。现在,我想将这个数字每20秒或20000毫秒减少50,直到周期变为200毫秒 目标-在游戏中,必须每20秒逐渐增加速度。 例如: 第一次执行-800毫秒, 第二次执行-750毫秒, 第三次执行-700毫秒, 等等 我想我可以插入一个Integer类型的函数(而不是800),它可以使这个任务从800毫秒减少到200毫秒 如何实现此功能?或者还有其他解决办法吗Java 如何生成一个减少数字的函数(例如,从800毫秒减少到200毫秒),java,android,function,android-studio,android-studio-3.2,Java,Android,Function,Android Studio,Android Studio 3.2,计时器设置为800毫秒的周期,因此always RandomPositions()将每隔800毫秒(该周期)执行一次内部代码。现在,我想将这个数字每20秒或20000毫秒减少50,直到周期变为200毫秒 目标-在游戏中,必须每20秒逐渐增加速度。 例如: 第一次执行-800毫秒, 第二次执行-750毫秒, 第三次执行-700毫秒, 等等 我想我可以插入一个Integer类型的函数(而不是800),它可以使这个任务从800毫秒减少到200毫秒 如何实现此功能?或者还有其他解决办法吗 public
public void RandomPositions() {
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask()
{
public void run() {
getWindowManager().getDefaultDisplay().getMetrics(displaymatrics);
float dx = r.nextFloat() * displaymatrics.widthPixels/1.2f;
float dy = r.nextFloat() * displaymatrics.heightPixels/1.2f;
button.animate().x(dx).y(dy).setDuration(0);
}
}, 0, 800); // first value = Delay , Second value = Period(what I need to change)
我不会使用计时器,因为时间间隔一直在变化 在香草安卓系统中,我可能会使用
确保在需要停止时,或当用户离开正在运行的活动/上下文时,调用
removeCallbacks
。以下是一个使用计时器的解决方案。如果您不想在循环中调用该方法,那么每次调用时只需将延迟参数减去50即可
public static void main(String[] args) {
Timer timer = new Timer();
for(int i = 800; i >= 200; i-=50)
{
runTimer(timer, i);
}
}
private static void runTimer(Timer timer, int delay) {
timer.schedule(new TimerTask()
{
public void run() {
}
}, 0, delay);
}
将其设置为变量,并在每次调用函数时将其减量50,当达到200时停止。当然,不要使用scheduleAtFixedRate(),只使用schedule(task,delay),每次更改delay。
public static void main(String[] args) {
Timer timer = new Timer();
for(int i = 800; i >= 200; i-=50)
{
runTimer(timer, i);
}
}
private static void runTimer(Timer timer, int delay) {
timer.schedule(new TimerTask()
{
public void run() {
}
}, 0, delay);
}