Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何生成一个减少数字的函数(例如,从800毫秒减少到200毫秒)_Java_Android_Function_Android Studio_Android Studio 3.2 - Fatal编程技术网

Java 如何生成一个减少数字的函数(例如,从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

计时器设置为800毫秒的周期,因此always RandomPositions()将每隔800毫秒(该周期)执行一次内部代码。现在,我想将这个数字每20秒或20000毫秒减少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)

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

在香草安卓系统中,我可能会使用


确保在需要停止时,或当用户离开正在运行的活动/上下文时,调用
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);  
    }