Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 13-10-2004, 23:22   #1 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Preloader „Prozent“ == NaN

Hi,

ich hab ein sehr seltsames Problem… noch nie vorher aufgetreten und leider kann man auch nicht hier im Forum danach suchen, da „NaN“ in der Suche ignoriert wird.

Unter http://casino.deetune.com könnt ihr eine Preview eines aktuellen Jobs sehen.
Immer wenn etwas preloaded wird, wird an den Mauszeiger ein MC mit dynamischen Textfeld gehängt.

Der Preloader für die main.swf funktioniert auch wunderbar… hat so ca. 240kb zu laden und fängt wegen der eingebettenen Fonts auch erst ab ca. 15% an… macht aber nichts weiter… den Font-Workaround tu ich mir dann beim nächsten Projekt an… oder ich nehm hier doch _sans als Font… aber ok. Das ist nicht das Problem.
Wenn ihr nun auf der Hauptseite seid, kann man beim durchnavigieren beobachten, wie rechts immer eine Animation (ca. 16kb) geladen und dann abgespielt wird.
Währenddessen hängt am Mauszeiger das Prozentzeugs…

Nun… erst hatte ich das Problem, das man teilweise nur das Prozentzeichen, jedoch aber nicht die Prozentzahl sah, wenn diese kleines als 10% war… und da die dyn. geladenen swf bei DSL ruckzuck da sind, hab ich dann mein Script angepasst, indem ich das statische % entfernt habe und immer nun mit der Prozentzahl konkateniert in ein dyn. Textfeld schreibe, welches das '%' und die Numerals embeded hat. Geht auch prima, keine einsames % mehr…

Jedoch sieht man jetzt am Anfang manchmal „NaN%“… was darauf schließen lässt, das die Variable percent nicht definiert ist… oder?
Aber warum… ich hab im ersten Frame dieses Filmes ca. 1200 Zeilen Script… ca. 300 werden pro Menüpunkt abgearbeitet… vielleicht zuviel Script, sodass der Flashplayer instabil wird?
Eigentlich sollte nämlich percent und das '%' nur geschrieben werden, wenn percent<=0…
NaN sollte diese Bedingung meiner Meinung nach nicht erfüllen… kann man das mit strikter Gleichheit/Größer als machen? Also Bezug auf den Datentyp nehmen?

Naja… ich hab workarounded wie ein blöder… nix klappt.

PHP-Code:
//AS1
_root.onEnterFrame=function()
                {
                var 
current=_root.right_elements.getBytesLoaded();
                var 
total=_root.right_elements.getBytesTotal();
                var 
percent=Math.round((current/total)*100);
                if(
percent>=&& percent!='NaN' && percent!='')
                    {
                    
_global.mouseObject.percent.text=percent+'%';
                    }
                if(
current>=total && current>=4
                    {
                    
_root.right_elements.gotoAndStop(2);
                    
_global.mousePercentage('hide');
                    
                    
delete _root.onEnterFrame;
                    }
                }; 
Hier das Snipplet…

Und, was meint ihr?

Liebe Grüße

Yves
  Mit Zitat antworten
Alt 13-10-2004, 23:31   #2 (permalink)
meistens harmlos
 
Benutzerbild von rena
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 17.643
Zitat:
Zitat von 409coffeemaker
Eigentlich sollte nämlich percent und das '%' nur geschrieben werden, wenn percent<=0…
Du meinst > 0 oder?

Generell entsteht das NaN bei einer Ladeanzeige, wenn getBytesTotal noch nicht definiert ist, also 0 und dadurch ein "devide by zero" entsteht, ein mathematischer Irrtum ... ein "Nichts".

Du könntest z.B. auch abfragen, ob getBytesTotal > 0 ist, wobei dein Workaround möglicherweise auch klappt doch NaN meines Wissens ohne Anführungszeichen.

Grüße
Rena
__________________
www.rena-hermann.de

The angels have the phone box
rena ist offline   Mit Zitat antworten
Alt 13-10-2004, 23:38   #3 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Hi… jo meinte ich. Vertippselt… ich werds mal mit dem NaN ohne Anführungszeichen probieren…

Ansonsten nochmal…

Wenn jemand etwas mehr Script braucht… habs mal kommentiert…

PHP-Code:
//Actionscript 1.0

//_global.navigationHandler() wird onRelease der Buttons mit entsprechendem Parameter aufgerufen.

_global.navigationHandler=function(functionID)
    {
    switch(
functionID)
        {
        case 
navigationFunction[0]:
              
              
//Löscht vorherige LoadVars(), Soundobjekte, Intervalle, Instanzen… quasi der Müllmann ;)
            
_global.clearStage();
            
            
//LoadVars Objekt… lädt Daten und Instanziert MCs, sowie zieht diese dann in eine instanzierte Scrollpane
            
_global.newsdBase();
            
            
//rechte Animation wird geladen
            
_root.right_elements.loadMovie('right_element_1.swf',500);
            
            
//Mauszeiger wird angezeigt, damit man die Prozentzahl sieht. Ebenfalls wird das Anzeigefeld dort geleert… daran liegts also nicht.
            //Script ist aber ebenfalls weiter unten zu finden
            
_global.mousePercentage('show');
            
            
//preloader
            
_root.onEnterFrame=function()
                {
                
//Checken, wieviel vom aktuellen Container geladen ist
                
var current=_root.right_elements.getBytesLoaded();
                
//Checken, wie groß der Container mit der o.g. loadMovie SWF ist
                
var total=_root.right_elements.getBytesTotal();
                
//Dreisatz Hardcore
                
var percent=Math.round((current/total)*100);
                
//Prozent mindestens 0, und ein paar Bytes sollten geladen sein
                
if(percent>=&& current>4)
                    {
                    
//Prozent + %... und dann ab dafür in das Mausmoped
                    
_global.mouseObject.percent.text=percent+'%';
                    }
                
// 100& geladen sowie Absicherung gegen 0==0
                
if(current>=total && current>=4
                    {
                    
//Animation läuft ab…
                    
_root.right_elements.gotoAndStop(2);
                    
//Mousemoped verstecken, Felder werden wie cleared.
                    
_global.mousePercentage('hide');
                    
//Preloader kann nach Hause
                    
delete _root.onEnterFrame;
                    }
                };        
            
//Registiert, wer grad in der Navi die Hosen an hat
            
_global.statePatternHandler(functionID);
        break;
        
//etc… 

Liebe Grüße

Yves
  Mit Zitat antworten
Alt 13-10-2004, 23:42   #4 (permalink)
nerdig working
 
Benutzerbild von michael
 
Registriert seit: Jul 2001
Ort: Hamburg
Beiträge: 5.832
trace(0/0) // NaN

ach rena war schon da :-)
michael ist offline   Mit Zitat antworten
Alt 13-10-2004, 23:48   #5 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Danke Rena, Danke Knut

Problem ist behoben…

PHP-Code:
//Actionscript 1.0
var current=_root.right_elements.getBytesLoaded();
                var 
total=_root.right_elements.getBytesTotal();
                var 
percent=Math.round((current/total)*100);
                if(
percent>=&& total>0)
                    {
                    
_global.mouseObject.percent.text=percent+'%';
                    
                    } 
Das liegt wohl daran, das das so schnell aufeinander folgt und Flash etwas träge ist, das die getBytesTotal(); wie Rena schon gesagt hat, beim den ersten onEnterFrame Durchläufen noch nicht definiert sind.

Liebe Grüße

Yves
  Mit Zitat antworten
Alt 14-10-2004, 00:01   #6 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
BTW!
des würde auch schon reichen!!
ActionScript:
  1. total>0
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 14-10-2004, 00:05   #7 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Abschließend für alle, die hier mal drüber stolpern…

trace (0/0) //NaN

und

trace(Math.random()/0) //Infinity



Liebe Grüße

Yves
  Mit Zitat antworten
Alt 14-10-2004, 00:08   #8 (permalink)
brand new user
 
Benutzerbild von RustyCake
 
Registriert seit: May 2002
Ort: Laimbach 6 1/2
Beiträge: 16.884
Zitat:
Zitat von 409coffeemaker
trace(Math.random()/0) //Infinity
Wie kommst auf so eine Geschichte
__________________
Bitte keine Fragen, zu Flash per PM. Dazu ist das Forum da. Danke MFG_RustyCake!
"Wer tanzen will, muß erst gehen lernen"
RustyCake ist offline   Mit Zitat antworten
Alt 14-10-2004, 00:12   #9 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Zitat:
Zitat von RustyCake
BTW!
des würde auch schon reichen!!
ActionScript:
  1. total>0
Moin Rusty… stimmt… is ja logisch da „total“ der Divisor zum Errechnen von „percent“ ist… und „total>0“ schließt einmal durch die gerundete Divison von „current/total“ einen Wert „<0“ aus… und außerdem sind „0/irgendwas(>0)“ ebenfalls „0“… falls noch nie geladen wurde…

Ich änder das mal eben schnell
  Mit Zitat antworten
Alt 14-10-2004, 00:22   #10 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Zitat:
Zitat von RustyCake
Wie kommst auf so eine Geschichte :D
An den Drogen kann es nicht liegen… die letzten hab ich gestern alle verbraucht… ;)

Nee wollte mal ausprobieren, was Flash sagt, wenn der Divident 0 ist.

Ganz nebenbei werd ich mal meine Kenntnisse zu Zufallszahlen auffrischen… bin ich grad so drüber gestolpert…

Oder machen wir das kurz zusammen…



Also…

random() hab ich gelesen, ist depreciated…

Ok…

Also dann Math.random()*grenzwert…

Und damit es kein Dezimalstellengeballer gibt Math.ceil(Math.random()*grenzwert)…

Soweit richtig? Ich denk mal grad laut… hehe ;)

Math.ceil() eignet sich eher als Math.floor(), da Math.floor() die Dezimalstellen frisst und Math.ceil() zu der nächsten Integer hingezogen fühlt und man somit eine Tendenz zu niedrigeren Zahl aussschließen kann?

Was ist denn der Unterschied zwischen Math.round() und Math.floor() ?

Und wie kriegt man eine beliebige Zufallszahl? Ist das überhaupt möglich? Die könnte dann ja unendlich Stellen haben, wenn man keinen Grenzwert eingibt… und die Berechnung müsste ja ewig dauern, je genauer das ist…

Hatte Seib da nicht mal was zu gefaselt? ;)

ich find das echt interessant. Vielleicht sollte ich ma bei 1Live's Domian anrufen und mit ihm n bißchen darüber schnacken… :D


Yves
  Mit Zitat antworten
Alt 14-10-2004, 04:34   #11 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
ich fasele nicht, was soll denn das?
alles was ich sage sind müstische beschwörungsformeln, damit die welt nicht unter geht. also alles eminent wichtig.

und es ging um "normalverteilte zufallszahlen".
wärend "beliebige Zufallszahl" ja wohl eher so ein weisser schimmel ist. zufallszahlen sind beliebige zahlen sonst wärens keine zufallszahlen.


Math.round() nächstliegende Ganzzahl auf oder ab (bis .4999 kleiner, ab .5 grösser)
Math.floor() nächstliegende Ganzzahl, die kleiner oder gleich (.99999 kleiner)
Math.ceil() nächstliegende Ganzzahl, die größer oder gleich der Zahl ist (.000001 grösser)


puhhhh, mal wieder die welt gerettet ;-)
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 14-10-2004, 12:58   #12 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Danke Seib :-)

Faseln war auch nicht böse gemeint. Hatte dir doch erst letzte Woche 'ne kleine Lobeshymne wegen deiner Site per Email gesendet.

Mit der unglücklich formulierten „beliebigen Zufallszahl“ meinte ich eine Zufallszahl aus der gesamten Menge aller Zahlen, welche ja bekanntlich unendlich ist.

Also eher ein philosophisches Vorhaben

var grenzwert={Z}
Math.ceil(Math.random()*grenzwert)


Yves
  Mit Zitat antworten
Alt 14-10-2004, 14:36   #13 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
"..Faseln war auch nicht böse gemeint.."
ach was. da wäre ich von alleine jetzt nicht drauf gekommen ;-)


"..eine Zufallszahl aus der gesamten Menge aller Zahlen.."

weiss nicht, was du weisst. alle random-funktionen sind alle "nur" eine reihenfolge von festen zahlen. bei den meisten programmiersprachen kann man eine startzahl vorgeben. mit der selben startzahl ergeben sich immer wieder die selben "zufallszahlen" (so kann man testen und reproduzieren)

die methoden unterscheiden sich eigentlich nur darinn, ab wann sich die zahlenreihe wiederholt.

falls du in der richtung mal was wissen willst, z.B.
pocketbook of mathematical functions
Abramowitz
Verlag Harri Deutsch
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 14-10-2004, 15:29   #14 (permalink)
Neuer User
 
Registriert seit: Apr 2004
Ort: Kalifornien
Beiträge: 239
Hier ist ein .as Script, dass der movie von 0 an gezaehlt wird. Die Instruktionen sind im Script.
Angehängte Dateien
Dateityp: zip FlashscriptLoader_comp.as.zip (1,6 KB, 21x aufgerufen)
__________________
Es war schon immer etwas teurer, einen guten Flash Film zu machen.
www.flashscript.biz
cancerinform ist offline   Mit Zitat antworten
Alt 14-10-2004, 16:14   #15 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Hi Seib,

vielen Dank für den Buchtipp. Ich schau mal bei Amazon. Mathematik und Physik faszinieren mich sehr, gerade wenn es dann um Dinge wie Definition von Unendlichkeit etc. geht…
Daher gefiel mir auch auf deiner Seite das Beispiel mit dem „Mischen“ sehr gut.
An alle die es nicht kennen… unbedingt mal ansehen!

Ich hab mir schon gedacht, das es da wohl nichts geben wird… war auch eher eine Frage aus reiner Interesse an der Sache an sich.

//


Hi cancerinform,

ich hab mir dein Script mal angesehen… kannst du mir das ein wenig erläutern? Ich möchte das gerne verstehen, bevor ich es anwende… wenn mich nicht alles täuscht, geht es doch darum, den ganzen Content ein Level höher zu shiften, oder?

Liebe Grüße

Yves
  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:47 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele