【发布时间】:2019-01-10 22:16:35
【问题描述】:
定时器设置为 800 毫秒的周期,因此 RandomPositions() 总是会每 800 毫秒(周期)执行一次内部代码。现在,我想要每 20 秒或 20,000 毫秒将此数字减少 50,直到将周期变为 200 毫秒。
目标 - 在游戏中,必须每 20 秒逐渐提高速度。
示例: 第一次执行 - 800 毫秒, 第二次执行 - 750 毫秒, 第三次执行 - 700 毫秒, 等等……
我认为我可以插入一个整数类型的函数(而不是 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)
【问题讨论】:
-
将其设置为一个变量,每次调用该函数时减 50,当然当达到 200 时停止
-
那就不要用scheduleAtFixedRate(),用schedule(task, delay),每次都改delay。
标签: java android function android-studio android-studio-3.2