-3

スピードメーターをプログラムしようとしています!針の画像があり、現在のダウンロード速度に応じて針を回転させたい。

次の方法がありますが、うまくいきません。CurrentDegressで針を更新すると、針が下がることはなく、どんどん高くなります。針が円の周りを回転します...誰か?!

- (void) recalculateDegrees:(CGFloat) currentlyLoadedBytes
{
    if(bytes <= 0){
        currentDegrees = 0;
    }
    else if (bytes > completeFileSize){
        currentDegrees = MAX_DEGREES;
    }
    else {
        CGFloat log_tmp =(CGFloat) log10f(currentlyLoadedBytes / 1000);
        currentDegrees = (log_tmp/5.0f)*290.0f;
    }
    //code to rotate image to currentDegrees
}
4

2 に答える 2

1

currentlyLoadedBytes次のメソッドを使用して、( からではなく)速度値から角度を取得できます。

- (CGFloat)angleFromSpeed:(CGFloat)speed
{
    if (speed <= 0) {
        return MIN_ANGLE;
    } else if (speed >= MAX_SPEED) {
        return MAX_ANGLE;
    } else {
        return speed / MAX_SPEED * (MAX_ANGLE - MIN_ANGLE) + MIN_ANGLE;
    }
}
于 2012-08-29T14:57:10.330 に答える
0

私はあなたがやっていることの 100% に従っているわけではありませんが、elseブロックのどこかで分割する必要がありますcurrentlyLoadedBytes / completeFileSize。また、あるbytesはずcuurentlyLoadedBytesですか?

于 2012-08-29T14:51:18.227 に答える