Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 05-06-2006, 20:38   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 116
Question Preloader - KB-Anzeige runden auf 2 Stellen nach dem Komma.

Hi Leute,

ich häng da jetzt schon ne Weile an dem Problem.

Habe hier im Forum schon geschaut und zum Thema "runden" auch einen tollen Beitrag gefunden, aber irgendwie will es nicht funktionieren.
Ich arbeite mit Flash MX.

Hier das AS:

BILD 1

function runden(wert){
wert = (Math.round(wert*100)/100).toString().split(".");
if (!wert[1]) {
wert[1] = "00";
}
if (wert[1].length<2) {
wert[1] += 0;
}
wert = wert.join(",");
}//End Function runden


BILD 4

geladeneBytes = _root.getBytesLoaded();
gesamteBytes = _root.getBytesTotal();

//Umrechnung in KB und Runden auf 2 Stellen nach dem Komma

geladeneKB = geladeneBytes / 1024;
runden(geladeneKB);
gesamteKB = gesamteBytes / 1024;
runden(gesamte KB);


if(geladeneBytes < gesamteBytes){
textausgabe_bytes = geladeneBytes + " " + "Bytes von" + gesamteBytes + "geladen";
textausgabe_kbytes = geladeneKB + " " + "KiloBytes von " + gesamteKB + "geladen";
gotoAndPlay("preload_loop");
}//end if
else{
gotoAndPlay("begin_movie");
}

---------------------------------------------

Zur Erklärung:
Er soll so lange die Schleife preload_loop abspielen, bis die geladeneBytes gleich den gesamteBytes sind. Erst dann soll der Film bei Bild 5 beginnen-->gotoAndPlay("begin_movie");

Es funktioniert alles bis auf die Anzeige der KB. bei mir zeigt er nämlich
8 oder 9 Stellen hinter dem Komma (z.b: 186.234234899 KB) an, das nätürlich mein dyn. Textfeld unheimlich und unnötig vergrößert. Habs mit der runden-Funktion, die ich hier im Forum so ähnlich gefunden habe, ausprobiert, aber es geht leider nicht.

Habt ihr mir einen Tipp?
Besten Dank für eure Hilfe.

bye
trancelight
trancelight ist offline   Mit Zitat antworten
Alt 05-06-2006, 21:14   #2 (permalink)
Pending…
 
Benutzerbild von psyk
 
Registriert seit: Jul 2002
Ort: Hamburg
Beiträge: 3.866
Schau mal bei Flashstar vorbei.
__________________
:: Warum einfach, wenn's auch kompliziert geht! ::
psyk ist offline   Mit Zitat antworten
Alt 05-06-2006, 21:30   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 116
Danke für deine schnelle Antwort, aber leider kann ich die Datei nicht öffnen, weil ich nur Flash MX und nicht MX 2004 habe
trancelight ist offline   Mit Zitat antworten
Alt 05-06-2006, 21:44   #4 (permalink)
Pending…
 
Benutzerbild von psyk
 
Registriert seit: Jul 2002
Ort: Hamburg
Beiträge: 3.866
Hier mal die source.
Version 2
PHP-Code:
// --------------------------------------------------------------------
// Number.prototype.runden (round - shortversion)
// 
// Definition: zahl.runden(Rundungsmodus, DezimalZeichen, Genauigkeit)
// 
// pModus - Rundungsmodus (Auswahl: exc, dif, nat)
// pDezZeichen - Dezimal Trennzeichen
// pStellen - Prezision (Genauigkeit) - legt die Anzahl der Stellen nach dem Dezimalzeichen fest
// 
// Syntax: zahl_variable.runden("exc", ",", 2)
// 
// Anmerkung zu pModus - folgende Modien stehen zur Verfügung:
// "exc" :  (bsp: 10.1 -> 11 / 10.6 -> 11)
// "dif" :  (bsp: 10.8 -> 10 / 10.6 -> 10)
// "nat" :  (bsp: 10.1 -> 10 / 10.6 -> 11)
// 
// "exc" : ceil (Obergrenze - ist die nächstliegende Ganzzahl, die größer oder gleich der Zahl ist)
// "dif" : floor (Untergrenze - ist die nächstliegende Ganzzahl, die kleiner oder gleich der angegebenen Zahl ist)
// "nat" : round (Runden - rundet den Wert des Parameters x auf die nächstliegende Ganzzahl auf oder ab und gibt diese zurück)
// 
// ---------------------------------------------------------------------

Number.prototype.runden = function(pModuspDezZeichenpStellen)
{
    if (
pModus == "exc") return (Math.floor(this)+pDezZeichen+Math.ceil(this*Math.pow(10pStellen)).toString().slice(-pStellen));             
   else if (
pModus == "dif") return (Math.floor(this)+pDezZeichen+Math.floor(this*Math.pow(10pStellen)).toString().slice(-pStellen));
   else if (
pModus == "nat") return (Math.floor(this)+pDezZeichen+Math.round(this*Math.pow(10pStellen)).toString().slice(-pStellen));
   else return 
"Fehler: Modus fehlt!";
};


Number.prototype.runden_nat = function(pDezZeichenpStellen)
{
 return (
Math.floor(this)+pDezZeichen+Math.round(this*Math.pow(10pStellen)).toString().slice(-pStellen));
};

// Verwenden - Beispiele
zahl_1 999.444536455;
zahl_2 999.444536455;
zahl_3 999.444536455;
zahl_4 999.44;

gerundet_1 zahl_1.runden ("exc"","2);
gerundet_2 zahl_2.runden ("dif""."3);
gerundet_3 zahl_3.runden ("nat"","3);
gerundet_4 zahl_4.runden ("nat"","3);

trace ("-----------------------------");
trace ("Zahl 1 original: " zahl_1);
trace ("Zahl 1 gerundet: " gerundet_1);
trace ("Zahl 2 original: " zahl_2);
trace ("Zahl 2 gerundet: " gerundet_2);
trace ("Zahl 3 original: " zahl_3);
trace ("Zahl 3 gerundet: " gerundet_3);
trace ("Zahl 4 original: " zahl_4);
trace ("Zahl 4 gerundet: " gerundet_4);
trace ("-----------------------------");
trace ("Zahl 1 gerundet: " zahl_1.runden_nat(",",2))


ausgabe_txt.text "Zahl 1 original: " zahl_1 "\n";
ausgabe_txt.text += "Zahl 1 gerundet: " gerundet_1 "\n";
ausgabe_txt.text += "Zahl 2 original: " zahl_2 "\n";
ausgabe_txt.text += "Zahl 2 gerundet: " gerundet_2 "\n";
ausgabe_txt.text += "Zahl 3 original: " zahl_3 "\n";
ausgabe_txt.text += "Zahl 3 gerundet: " gerundet_3 "\n";
ausgabe_txt.text += "Zahl 4 original: " zahl_4 "\n";
ausgabe_txt.text += "Zahl 4 gerundet: " gerundet_4 "\n";
ausgabe_txt.text += "Zahl 1 gerundet: " zahl_1.runden_nat(",",2); 
__________________
:: Warum einfach, wenn's auch kompliziert geht! ::

Geändert von psyk (05-06-2006 um 23:21 Uhr)
psyk ist offline   Mit Zitat antworten
Alt 05-06-2006, 21:46   #5 (permalink)
Pending…
 
Benutzerbild von psyk
 
Registriert seit: Jul 2002
Ort: Hamburg
Beiträge: 3.866
und Version 3

PHP-Code:
// --------------------------------------------------------------------
// Number.prototype.runden_extended
//
// Definition: zahl.runden(Rundungsmodus, DezimalZeichen, Genauigkeit)
//
// pModus - Rundungsmodus (Auswahl: ceil, floor, round)
// pDezZeichen - Dezimal Trennzeichen
// pStellen - Prezision (Genauigkeit) - legt die Anzahl der Stellen nach dem Dezimalzeichen fest
//
// Syntax: zahl_variable.runden("ceil", ",", 2)
//
// Anmerkung zu pModus - folgende Modien stehen zur Verfügung:
// "ceil" :  (bsp: 10.1 -> 11 / 10.6 -> 11)
// "floor" :  (bsp: 10.8 -> 10 / 10.6 -> 10)
// "round" :  (bsp: 10.1 -> 10 / 10.6 -> 11)
//
// "ceil" : ceil (Obergrenze - ist die nächstliegende Ganzzahl, die größer oder gleich der Zahl ist)
// "floor" : floor (Untergrenze - ist die nächstliegende Ganzzahl, die kleiner oder gleich der angegebenen Zahl ist)
// "round" : round (Runden - rundet den Wert des Parameters x auf die nächstliegende Ganzzahl auf oder ab und gibt diese zurück)
//
// ---------------------------------------------------------------------
Number.prototype.runden_extended = function(pModuspDezZeichenpStellen) {
   if (
"ceil-floor-round".indexOf(pModus) == -1) {
      return 
"runden-Fehler: unbekannter Modus!";
   }
   if (
".,".indexOf(pDezZeichen) == -1) {
      return 
"runden-Fehler: unbekanntes DezZeichen!";
   }
   if (
pStellen != Math.abs(Math.round(pStellen))) {
      return 
"runden-Fehler: ungeeignete Stellenangabe!";
   }
   var 
resultat String(Math[pModus](this*Math.pow(10pStellen))/Math.pow(10pStellen));
   if (
pStellen && resultat.indexOf("e") == -1) {
      
resultat += (resultat.indexOf(".") != -1) ? "" ".";
      var 
nullen resultat.indexOf(".")-resultat.length+1+pStellen;
      while (
nullen--) {
         
resultat += "0";
      }
   }
   return 
resultat.split(".").join(pDezZeichen);
};

// Verwenden - Beispiele
// Positive Werte
zahl_1 999.444536455;
zahl_2 999.444536455;
zahl_3 999.444536455;
zahl_4 999.44;
gerundet_1 zahl_1.runden_extended("ceil"","2);
gerundet_2 zahl_2.runden_extended("floor""."3);
gerundet_3 zahl_3.runden_extended("round"","3);
gerundet_4 zahl_4.runden_extended("round"","3);
trace("-----------------------------");
trace("Zahl 1 original: "+zahl_1);
trace("Zahl 1 gerundet: "+gerundet_1);
trace("Zahl 2 original: "+zahl_2);
trace("Zahl 2 gerundet: "+gerundet_2);
trace("Zahl 3 original: "+zahl_3);
trace("Zahl 3 gerundet: "+gerundet_3);
trace("Zahl 4 original: "+zahl_4);
trace("Zahl 4 gerundet: "+gerundet_4);
trace("-----------------------------");

ausgabe_txt.text += "Zahl 1 original: " zahl_1 "\n";
ausgabe_txt.text += "Zahl 1 gerundet: " gerundet_1 "\n";

// Negative Werte + Auffüllung
zahl_1 = -0.00123456789e-12;
zahl_2 = -123.456789;
zahl_3 = -0.35;
zahl_4 20;
trace("ceil : "+zahl_1.runden_extended("ceil"","0));
trace("floor: "+zahl_1.runden_extended("floor""."1));
trace("round: "+zahl_1.runden_extended("round"","20));
trace("ceil : "+zahl_2.runden_extended("ceil"","0));
trace("floor: "+zahl_2.runden_extended("floor""."4));
trace("round: "+zahl_2.runden_extended("round"","4));
trace("ceil : "+zahl_3.runden_extended("ceil"","0));
trace("floor: "+zahl_3.runden_extended("floor""."4));
trace("round: "+zahl_3.runden_extended("round"","4));
trace("ceil : "+zahl_4.runden_extended("ceil"","0));
trace("floor: "+zahl_4.runden_extended("floor""."4));
trace("round: "+zahl_4.runden_extended("round"","4));
trace("-----------------------------");


ausgabe_txt.text += "Zahl 1 original: " zahl_1 "\n";
ausgabe_txt.text += "Zahl 1 gerundet: " zahl_1.runden_extended("ceil"","0) + "\n";
ausgabe_txt.text += "Zahl 1 gerundet: " zahl_1.runden_extended("floor""."1) + "\n";
ausgabe_txt.text += "Zahl 1 gerundet: " zahl_1.runden_extended("round"","20) + "\n"
__________________
:: Warum einfach, wenn's auch kompliziert geht! ::
psyk ist offline   Mit Zitat antworten
Alt 05-06-2006, 23:10   #6 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 116
WoW!!! Schon mal vielen lieben Dank!

Ich probier es morgen gleich aus.

bye
DJ Trancelight
trancelight ist offline   Mit Zitat antworten
Alt 07-06-2006, 10:33   #7 (permalink)
Neuer User
 
Registriert seit: Oct 2003
Beiträge: 116
Hi psyk,

ich habe es jetzt Dank deiner Hilfe hinbekommen.
Vielen Dank!!!

Ich dachte mir nur, dass das Beispiel auf Flashstar in AS 2.0 geschrieben ist und es bei mir nicht funktioniert.

Besten Dank

bye
DJ Trancelight
trancelight ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 03:40 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele