简体   繁体   English

使用IF语句更改图像

[英]Change Image Using IF Statements

I have setup a fuel bar in my game, but I am trying to use if statements to change the bar image based on how low the fuel percentage is. 我在游戏中设置了一个燃料棒,但我试图使用if语句根据燃料百分比的低点来改变条形图像。 For some reason, the image is not changing along with the percentage. 出于某种原因,图像不随百分比变化。 As such, the bar remains full. 因此,酒吧仍然满员。 What is going on here? 这里发生了什么?

fuelRemaining = 100;
    FuelRemaining.text = [NSString stringWithFormat:@"%i%%", fuelRemaining];
    FuelBar.image = [UIImage imageNamed:@"fuel_bar_100.png"];
    if (fuelRemaining > 90) {
        FuelBar.image = [UIImage imageNamed:@"fuel_bar_100.png"];
    }
    else if (fuelRemaining > 80 && fuelRemaining <= 90) {
        FuelBar.image = [UIImage imageNamed:@"fuel_bar_90.png"];
    }
    else if (fuelRemaining > 70 && fuelRemaining <= 80) {
        FuelBar.image = [UIImage imageNamed:@"fuel_bar_80.png"];
    }
    else if (fuelRemaining > 60 && fuelRemaining <= 70) {
        FuelBar.image = [UIImage imageNamed:@"fuel_bar_70.png"];
    }
    else if (fuelRemaining > 50 && fuelRemaining <= 60) {
        FuelBar.image = [UIImage imageNamed:@"fuel_bar_60.png"];
    }
    else if (fuelRemaining > 40 && fuelRemaining <= 50) {
        FuelBar.image = [UIImage imageNamed:@"fuel_bar_50.png"];
    }
    else if (fuelRemaining > 30 && fuelRemaining <= 40) {
        FuelBar.image = [UIImage imageNamed:@"fuel_bar_40.png"];
    }
    else if (fuelRemaining > 20 && fuelRemaining <= 30) {
        FuelBar.image = [UIImage imageNamed:@"fuel_bar_30.png"];
    }
    else if (fuelRemaining > 10 && fuelRemaining <= 20) {
        FuelBar.image = [UIImage imageNamed:@"fuel_bar_20.png"];
    }
    else if (fuelRemaining > 0 && fuelRemaining <= 10) {
        FuelBar.image = [UIImage imageNamed:@"fuel_bar_10.png"];
    }
    else {
        FuelBar.image = [UIImage imageNamed:@"fuel_bar_0.png"];
    }

First of all, simplify that with some basic math: 首先,通过一些基本的数学简化:

int fuelRounded = 10.0 * floor((fuelRemaining/10.0)+0.5);
NSString *fuelImageString = [NSString stringWithFormat:@"fuel_bar_%d.png", fuelRounded];
FuelBar.image = [UIImage imageNamed:fuelImageString];

(The math may need tweaking depending on your game logic and possible values for fuelRemaining .) (数学可能需要调整,具体取决于您的游戏逻辑和fuelRemaining可能值。)

Second, it looks like you're setting fuelRemaining to 100 at the top of the method. 其次,看起来你在该方法的顶部将fuelRemaining设置为100 You'll need to set the image again after fuelRemaining has changed to something else. fuelRemaining更改为其他内容后,您需要再次设置图像。

For example: 例如:

- (void) updateFuelViews {
    FuelRemaining.text = [NSString stringWithFormat:@"%i%%", fuelRemaining];

    int fuelRounded = 10.0 * floor((fuelRemaining/10.0)+0.5);
    NSString *fuelImageString = [NSString stringWithFormat:@"fuel_bar_%d.png", fuelRounded];
    FuelBar.image = [UIImage imageNamed:fuelImageString];
}

Then call [self updateFuelViews]; 然后调用[self updateFuelViews]; every time fuelRemaining changes. 每次fuelRemaining变化。

You may want to research Key-Value Observing , which would let you update the fuel views automatically whenever fuelRemaining changes. 您可能想要研究Key-Value Observing ,它可以让您在fuelRemaining更改时自动更新燃料视图。 It's a bit of a headache, but could make it easier to manage if you have lots of stuff changing constantly. 这有点令人头疼,但如果你有很多东西不断变化,可以让它更容易管理。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM