2012-08-29 3 views
-3

J'essaie de programmer un compteur de vitesse! J'ai une image d'aiguille, et je veux que l'aiguille tourne en fonction de la vitesse de téléchargement actuelle.Convertir kilo-octets en degrés

J'ai la méthode suivante, mais cela ne fonctionne pas. Quand je mets à jour mon aiguille avec CurrentDegress, il ne descend jamais, seulement de plus en plus haut; l'aiguille tourne autour du cercle ... Quelqu'un ?!

- (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 
} 
+2

Vous cherchez une réponse trigonométriques de base ou pour savoir comment calculer le sinus et cosinus d'un angle ? –

+2

Est-ce que ce compteur est censé indiquer le taux de téléchargement ou le pourcentage de téléchargement? –

+0

Non, je suis à la recherche du bon calcul pour mon aiguille en mouvement .... :) – davidOhara

Répondre

1

Vous pouvez utiliser la méthode suivante pour obtenir l'angle de la valeur de la vitesse (et non de 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; 
    } 
} 
+0

Salut, je ne comprends pas ... pouvez-vous expliquer un peu plus s'il vous plaît ... :) – davidOhara

+0

awwwwww doux, ça fonctionne .... Merci beaucoup! – davidOhara

0

Je ne suis 100% de ce que vous faites, mais quelque part dans votre bloc else vous devriez partagerai currentlyLoadedBytes/completeFileSize. En outre, bytes est-il supposé être cuurentlyLoadedBytes?

+0

oh yee, désolé octets devrait être actuellement LoadedBytes – davidOhara

+0

je veux faire un speedtest! Je calcule déjà la bonne vitesse, mais maintenant je veux que mon aiguille tourne à la bonne position sur mon graphique! – davidOhara

+0

Je calcule la vitesse juste avec: speed = currentFileSize/([NSDate timeIntervalSinceReferenceDate] - startTime); – davidOhara

Questions connexes