首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在每次int发生变化时创建一个计时器?Java

如何在每次int发生变化时创建一个计时器?Java
EN

Stack Overflow用户
提问于 2014-06-07 16:22:26
回答 1查看 32关注 0票数 0

我正在尝试为一个2d游戏中的敌人创造行为,我制作这个游戏是为了好玩,练习和学习的目的。我做它的移动的方式是让它随机地改变它的坐标(-5到5),但它做得非常快。

这是我的代码

代码语言:javascript
复制
public void EnemyMovement() 
    {
Random randomnum = new Random();
enemyX += randomnum.nextInt(5);
enemyX -= randomnum.nextInt(5);
enemyY += randomnum.nextInt(5);
enemyY -= randomnum.nextInt(5);

}

EN

回答 1

Stack Overflow用户

发布于 2014-06-07 17:43:14

您可以使用ScheduledExecutorService创建在后台运行的新线程。然后,它将以指定的时间间隔执行给定的任务

代码语言:javascript
复制
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.Executors;

import java.util.concurrent.TimeUnit;

import java.util.Random;

public class TimeMove {

    ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();;
    Random randomnum = new Random();

    public void moveNow() {
        int moveX = randomnum.nextInt(5);
        int moveY = randomnum.nextInt(5);
        System.out.println("Moving " + moveX + ", " + moveY);
    }

    public void startRandomMover()  {
        executor.scheduleAtFixedRate(new Runnable()
        {
            public void run() {
                moveNow();
            }
        }, 0, 1, TimeUnit.SECONDS);
    }

    public static void main(String[] args) {
        TimeMove mover = new TimeMove();
        mover.startRandomMover();
    }
}

请注意代码0, 1, TimeUnit.SECONDS。这意味着计时器将以0秒的延迟启动,然后每1秒调用一次。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24095294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档