gpt4 book ai didi

java - 根据系统时间调用函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:50:53 25 4
gpt4 key购买 nike

我无法根据系统时间正确调用函数。我的主要目的是为我的“炸弹人”对象提供更好的运动效果。不幸的是,它的行为很奇怪。我相信有一个愚蠢的小错误,但由于 30 小时不眠,我找不到。这是我的代码:

                if (System.currentTimeMillis() % 600 <= 200) {
if (!gEngine.gMap.bomber.isImmune) {
gEngine.gMap.bomber.setImage("bomberman_up3.gif");
} else {
gEngine.gMap.bomber.setImage("bomberman_red_up3.gif");
}
} else if (System.currentTimeMillis() % 600 <= 400) {
if (!gEngine.gMap.bomber.isImmune) {
gEngine.gMap.bomber.setImage("bomberman_up2.gif");
} else {
gEngine.gMap.bomber.setImage("bomberman_red_up2.gif");
}


} else if (System.currentTimeMillis() % 600 >= 400)
{
if (!gEngine.gMap.bomber.isImmune) {
gEngine.gMap.bomber.setImage("bomberman_up1.gif");
} else {
gEngine.gMap.bomber.setImage("bomberman_red_up1.gif");
}
}

顺便说一下,我很确定奇怪的不是 gif 图像的顺序。代码应每秒更改图像 3 次。如果你帮助我,也许我可以 sleep 。 :)

提前致谢。

最佳答案

假设您使用计时器定期调用该函数,您的特殊问题似乎是您多次请求系统时间,而不是一次,因此您在这三个部分中测试的值会发生变化。

你最好创建一个元素队列来在给定的更新时间内绘制,因为如果你只使用大量的 if 语句而不是 OO 抽象,你的代码最终会变得越来越复杂.

当屏幕被绘制时,获取一次时间,并将该时间传递给所有要绘制的元素。那样的话,所有的元素都会彼此同步,并且你不会遇到第一个 if 的时间与第三个 if 的时间不同的问题>.

因此,我会让 BomberMan 实现一个接口(interface),该接口(interface)具有所有动画元素都实现的 draw ( Graphics2D g, long time ) 方法,并且具有 get 和 set 方法而不是公共(public) isImmune 字段。 get 和 set 方法更改 Sprite 图像数组的值,因此代码不需要知道炸弹人所处的任何其他状态。

关于java - 根据系统时间调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4552885/

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