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