java - 在 Java 中每秒更新整数值,并使用给定数字之间的值
问题描述
我有 2 个整数值,假设 int a = 5 和 int b = 4。
public static void run() {
long lastTime = System.nanoTime();
final double ns = 1000000000.0 / 60.0;//60 times per second
double delta = 0;
while(running) {
long now = System.nanoTime();
delta = delta + ((now-lastTime) / ns);
lastTime = now;
while (delta >= 1)//Make sure update is only happening 60 times a second
{
delta--;
}
}
我想要实现的是能够将while (delta >= 1){}
每秒内的整数值更改为 100 到 400 之间的数字。我想创建一个绘制方法,该方法采用整数值并更新我的 JFrame 中的组件大小。我只需要一个想法,这样我就可以继续前进。
解决方案
我不确定我是否完全理解你的问题。但是,如果您打算每秒运行一段代码 60 次,那么肯定有一种更简单的方法可以实现这一点——通过 Java 的Thread.sleep()
机制。您可以使用 Java 的类实际为andRandom
生成随机值:a
b
public static void run() {
Random random = new Random();
while (running) {
try {
Thread.sleep(16); // 16 millisecond sleep; will run 60 times per second
// Generate random number between 100 and 400
a = (random.nextInt() % 300) + 100;
b = (random.nextInt() % 300) + 100;
} catch (Exception e) {
System.out.println("Exception encountered when trying to sleep! " + e.toString());
}
}
}
或者,您也可以使用 JavaTimer
和TimerTask
类来达到相同的效果。
推荐阅读
- swiftui - 如何坚持从 SwiftUI 列表中选择收藏夹?
- javascript - MaterialUI Select 设置值总是超出范围
- javascript - 如何更改html元素中的索引
- javascript - ROBLOX 不和谐机器人
- javascript - 无法在 Internet Explorer 11 中获取块 cookie 值
- session-variables - 如何从昨天的高点和收盘点画水平线?以及如何解决时间格式?行间填充
- python - 如何在Python中获取匹配名称的列表文件
- ruby-on-rails - 在 Heroku 上部署 Rails 应用程序时 Webpack 未找到错误
- java - 线程调度策略、上下文切换时间和线程的总 CPU 时间存在问题。Linux
- ruby-on-rails - 未定义的方法“变形虫”rails 5.2