2016-04-23 5 views
0

Ich versuche eine Nummer zu animieren. Ich habe keine Probleme mit Ints, aber mein System funktioniert nicht mit Floats.jQuery animateNumber - Wie floats prop.animieren

Wenn die propNumberGV 5,5 wäre und der neue data.value = 10.0, beginnt die Animationen bei 0.0 und es ist nicht bei 5.5. Das System funktioniert für Integer, aber nicht für Floats ...

var propNumberGV = gv == undefined || gv == null || gv == 0.0 ? 0 : gv; 
     var dcp = 2; 
     var dcf = dcp === 0 ? 1 : Math.pow(10, dcp); 
     $("#gameValue").prop('number', propNumberGV).animateNumber({ 
      number: data.value * dcf, 
      numberStep: function(now, tween) { 
       var floored_number = Math.floor(now)/dcf, 
       target = $("#gameValue"); 
       if (dcp > 0) { 
        floored_number = floored_number.toFixed(dcp); 
       } 

       target.text(floored_number); 
      } 
     }, 4000); 
     gv = data.value; 

Ich hoffe, Sie können mir helfen.

jQuery animateNumber: https://github.com/aishek/jquery-animateNumber/

+0

Ich habe es getan, ich musste einfach anstelle eines Schwimmers einen int geben. (500 statt 5,00) –

Antwort

0

hatte ich exakt das gleiche Problem, und ich es herausgefunden. Die Lösung war einfacher als ich dachte.

Multiplizieren Sie einfach Ihre PropNumberGV mit Ihrem DCF, wenn Sie es übergeben. Das Problem war nicht, dass die Prop-Nummer von 0 begann, war es, dass die Prop-Nummer wurde von Ihrem DCF jedes Mal geteilt (so das Plugin funktioniert), so dass es so aussieht, als ob es von 0 ausgegangen wäre, als es nur eine kleine Dezimalzahl war.

Try this:

var propNumberGV = gv == undefined || gv == null || gv == 0.0 ? 0 : gv; 
    var dcp = 2; 
    var dcf = dcp === 0 ? 1 : Math.pow(10, dcp); 
    $("#gameValue").prop('number', (propNumberGV*dcf)).animateNumber({ 
     number: data.value * dcf, 
     numberStep: function(now, tween) { 
      var floored_number = Math.floor(now)/dcf, 
      target = $("#gameValue"); 
      if (dcp > 0) { 
       floored_number = floored_number.toFixed(dcp); 
      } 

      target.text(floored_number); 
     } 
    }, 4000); 
    gv = data.value;