Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.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/7/user-interface/2.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 每秒递减一个整数_Java_Android_Andengine - Fatal编程技术网

Java 每秒递减一个整数

Java 每秒递减一个整数,java,android,andengine,Java,Android,Andengine,我正在使用AndEngine将精灵添加到场景中 精灵都是按一定的时间间隔添加的,我可以通过为其创建的类进行控制 例如,设置时间(以秒为单位) 我创建了这个方法,以便在用户与游戏交互期间,计时器可以根据需要进行更改 因此,当精灵添加到场景中时,它们会在y轴上随机移动 我有两个时间间隔,它们用来控制在屏幕上移动的最大持续时间和最小持续时间 例如 Private int MaxDurarion = 4;// 4 is equivalent to 4 seconds for this Private i

我正在使用AndEngine将精灵添加到场景中

精灵都是按一定的时间间隔添加的,我可以通过为其创建的类进行控制

例如,设置时间(以秒为单位)

我创建了这个方法,以便在用户与游戏交互期间,计时器可以根据需要进行更改

因此,当精灵添加到场景中时,它们会在y轴上随机移动

我有两个时间间隔,它们用来控制在屏幕上移动的最大持续时间和最小持续时间

例如

Private int MaxDurarion = 4;// 4 is equivalent to 4 seconds for this
Private int MinDuration = 2 //Same for minimum duration
我有一个IUpdateHandler,设计为每秒更新一次

因此,在这个方法中,我会相应地更新分数和其他内容

现在的问题是,我检查用户是否达到了某个分数,如果他们达到了某个分数,那么我想减少最大持续时间和最小持续时间

例如

if(userScore == MAX){
MaxDuration = MaxDuration - (int).2;
TimerSecond = TimerSecond - .1f;
}
现在我尝试了这种方法,但我发现每次更新后Maxduration都会返回到原始整数

我希望我已经很好地解释了我要做的事情

有更好的方法吗


谢谢各位。

你们正在将
.2
转换为
int
,我相信这会导致0,所以你们根本没有改变
MaxDuration

你们正在将
.2
转换为
int
,我相信这会导致0,因此,您根本没有更改
MaxDuration

问题在于(int)0.2将由于将小数重新输入整数而解析为零。因此,Maxduration始终没有从中减去任何值。

问题是,(int)0.2将解析为零,因为它将十进制数重新转换为整数。所以Maxduration总是不减去任何值。

Hmm这是一个很好的观点。那你觉得我怎么能解决这个问题?如果我将MaxDuration更改为双倍,则接收持续时间的方法将不会接受它,除非我使用(int)Double.@coder_for_life22如果这是您需要的功能,那么就执行它。4-.2是3.8,这是一个Double。这可以转换为int吗?它将转换为
4
,直到它转换为
3.4
,然后转换为
3
。如果你说的是像素,用户看不到像素的分数,所以他们不知道它们的区别。不过,你说的是时间,什么方法接受时间为秒?我在游戏中做的每一件与时间相关的事情都是毫秒级的。嗯,说得好。那你觉得我怎么能解决这个问题?如果我将MaxDuration更改为双倍,则接收持续时间的方法将不会接受它,除非我使用(int)Double.@coder_for_life22如果这是您需要的功能,那么就执行它。4-.2是3.8,这是一个Double。这可以转换为int吗?它将转换为
4
,直到它转换为
3.4
,然后转换为
3
。如果你说的是像素,用户看不到像素的分数,所以他们不知道它们的区别。不过,你说的是时间,什么方法接受时间为秒?我在游戏中做的每一件与时间相关的事情都是毫秒级的。嗯,说得好。那你觉得我怎么能解决这个问题?如果我将MaxDuration更改为double,则接收duration的方法不会接受它,除非我使用(int)double。如果接收duration的方法只接受int,则只能将其降低int。但是是的,将maxDuration设为浮点,这样您就可以减小它的值,这也会起作用。或者你可以每5秒减少1,而不是每秒钟减少0.2。这样,解决方案对最终用户来说都是一样的。嗯,好的。那你觉得我怎么能解决这个问题?如果我将MaxDuration更改为double,则接收duration的方法不会接受它,除非我使用(int)double。如果接收duration的方法只接受int,则只能将其降低int。但是是的,将maxDuration设为浮点,这样您就可以减小它的值,这也会起作用。或者你可以每5秒减少1,而不是每秒钟减少0.2。通过这种方式,最终用户将看到相同的解决方案。
if(userScore == MAX){
MaxDuration = MaxDuration - (int).2;
TimerSecond = TimerSecond - .1f;
}