gpt4 book ai didi

java - 如何制作一个减少数字的函数(例如从 800 毫秒减少到 200 毫秒)

转载 作者:行者123 更新时间:2023-12-02 10:23:43 25 4
gpt4 key购买 nike

计时器设置为 800 毫秒的周期,因此 RandomPositions() 总是每 800 毫秒(周期)执行一次内部代码。现在,我想要的是每 20 秒或 20,000 毫秒将该数字减少 50,直到周期达到 200 毫秒。

目标 - 在游戏中,速度必须每 20 秒逐渐增加一次。

示例:第一次执行 - 800 毫秒,第二次执行 - 750 毫秒,第三次执行 - 700 毫秒,等等...

我认为我可以插入一个 Integer 类型的函数(而不是 800),这可以使这项工作从 800 毫秒减少到 200 毫秒。

如何实现这个功能?或者有其他解决办法吗?

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)

最佳答案

我不会为此使用计时器,因为间隔一直在变化。

在普通 Android 中,我可能会使用 Handler

Int interval = 800; // milliseconds
Handler handler = new Handler()
Runnable runnable = new Runnable() {

@Override void run() {

//
// do your logic here
//

// decrement interval by 20 milliseconds
// if interval - 20 is greater than 200
interval = interval - 20 > 200 ? interval - 20 : interval;


// Request an execution of this runnable with the new value of interval
handler.postDelayed(runnable, interval);
}
}


public void start() {
handler.postDelayed(runnable, interval);
}

public void stop() {
handler.removeCallbacks(runnable);
}

无论何时您想要停止它,或者每当用户离开正在运行的 Activity/上下文时,请确保调用removeCallbacks

关于java - 如何制作一个减少数字的函数(例如从 800 毫秒减少到 200 毫秒),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54137692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com