我有一个if语句,我认为它是不洁净的,写得不好。我有一个值,可以减少并更改依赖于该值的节点的比例。因此,如果值为95,则比例为0.95。
写这个的最好方法是什么?我一直绞尽脑汁试图想出最佳方法。
我现在正在做这件事
//Set Stamina
if(hungerInt >= 100){
_foodNode.scaleY = 1.0f;
} else if (hungerInt >=95){
_foodNode.scaleY = 0.95f;
} else if (hungerInt >=90){
_foodNode.scaleY = 0.90f;
} else if (hungerInt >=80){
_foodNode.scaleY = 0.80f;
} else if (hungerInt >=70){
_foodNode.scaleY = 0.70f;
} else if (hungerInt >=60){
_foodNode.scaleY = 0.60f;
} else if (hungerInt >=50){
_foodNode.scaleY = 0.50f;
} else if (hungerInt >=40){
_foodNode.scaleY = 0.40f;
} else if (hungerInt >=30){
_foodNode.scaleY = 0.30f;
} else if (hungerInt >=20){
_foodNode.scaleY = 0.20f;
} else if (hungerInt >=10){
_foodNode.scaleY = 0.10f;
} else {
_foodNode.scaleY = 0.0f;
}
理想情况下,我希望它根据值来扩展exaclty,因此如果它是96
它将是0 .96
或者如果它是51
那么它将是0.51
答案 0 :(得分:4)
不需要if
:
_foodNode.scaleY = (CGFloat)hungerInt / 100.0f;
虽然这只有在您可以保证hungerInt
介于0
和100
之间时才有效,所以您可能需要先检查
if (hungerInt < 0)
hungerInt = 0;
else if (hungerInt > 100)
hungerInt = 100;
答案 1 :(得分:0)
为什么不能使用?
_foodNode.scaleY = hungerInt / 100.0f;
答案 2 :(得分:0)
如果您不希望_foodNode.scaleY
超过1.0且低于0.0,那么您可以使用此代码
_foodNode.scaleY = MAX( 0, MIN( (CGFloat)hungerInt / 100.0, 0 ) );
或者您可以使用函数来执行此操作。
// some pseudo c code.
static CGFloat minMax(CGFloat n) {
return MAX(0, min(100, n));
}
然后像这样调用它:
_foodNode.scaleY = minMax((CGFloat)hungerInt) / 100.0