我正在使用此代码查看用户分数是否可被20整除。
if(hitCount % 20 == 0){
interval = interval - 1;
Log.e("Score", "User score is divisible by 20 decreasing interval to "
+ interval);
timer.setInterval(interval);
}
唯一的问题是此代码位于andengine中的IUpdate方法中,每秒更新一次。
因此,如果用户得分可被20整除超过1秒,则会减去1。
如果用户得分可以被20整除,我只希望它减去一次。
有什么建议吗?
答案 0 :(得分:3)
你可以保留一个外部标志:
bool alreadySet = false;
然后,在您的代码中,设置或取消设置:
if(hitCount % 20 == 0) {
if(!alreadySet) {
alreadySet = true;
// Continue with your code
}
} else {
alreadySet = false;
}
我明白你的意思 - 它确实感觉有点混乱。
答案 1 :(得分:2)
我知道有一个选定的答案,但是:
在更新帖子中检查分数是否可以被20整除,而不是在更新分数时不检查它?它会减少您检查'%20'的次数(提高效率),也可以解决您的问题。
答案 2 :(得分:-2)
您可以使用标记来检查hitCount
是否已被20整除:
boolean bDivBy20 = false; // outside of the method
...
if(!bDivBy20 && hitCount % 20 == 0){
bDivBy20 = true;
interval = interval - 1;
Log.e("Score", "User score is divisible by 20 decreasing interval to " + interval);
timer.setInterval(interval);
}
此外,如果您想要输入if
块,但只执行一次interval = interval - 1;
行,则将检查移到外部if
块内,例如:
if(hitCount % 20 == 0){
...
if (!bDivBy20) {
...
}
...
}