| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Oct 2003 Ort: Luzern
Beiträge: 33
| "A script in this movie is causing Flash Player to run slowly"
Ich verwende ein externes XML File (16 kB gross), um Daten in einen Flash Film zu laden. Die ersten 6 Frames sind Preloader. Danach wird das XML mit der Aktion Name.load geladen. In den darauf folgenden Frames wird - das XML in Arrays gemappt - verschiedene kurze Funktionen ausgeführt Das Ganze läuft in der Entwicklungsumgebung stabil (Mac OSX / Flash MX publiziert als Flash 5), nicht aber im Web. Dort kommt beim Laden des SWF manchmal eine erratische Fehlermeldung "Macromedia Flash Player 6 wird durch ein Skript in diesem Film verlangsamt" bzw. "A script in this movie is causing Flash Player to run slowly". Man kann dann entscheiden, ob man das Skript abbrechen oder laufen lassen soll. Lässt man es laufen, blitzt der Film nur noch und zeigt nicht mehr das Gewünschte. Der Fehler tritt auf: - immer mit Mac OS 9.1 / IE 5 oder Netscape 4.76, der via Modem am Netz hängt - manchmal mit Mac OSX / IE 5.2 oder Safari der via ADSL am Netz hängt Der Player ist jeweils mindestens Version 6. Hat irgend jemand eine Ahnung, was hier vorgeht??? URL zum Demonstrieren: http://www.armadillo-media.ch/test_m...eration_d.html Komischerweise lädt alles korrekt, wenn man dann einen Reload macht. |
| | |
| | #2 (permalink) |
| Level up Registriert seit: Jun 2001 Ort: Bocholt
Beiträge: 4.155
|
also zu der Fehlermeldung kommt es, wenn flash zur Abarbeitung einer scriptzeile mehr als 30 (Flash5-Player) bzw mehr als 25 (Flash6-Player) Sekunden braucht, dann vermutet Flash eine Endlosschleife und gibt dem user die Möglichkeit zum Abbruch. eigentlich sollte das aber mit XML.load und dem onLoad-Handler nicht mehr passieren, höchstens beim parsen der XML-Daten, wie sieht denn in dem Bereich Dein script aus?? Gruß Alois
__________________ -Spuckt mir auf den Stuhl, ich will im Grünen sitzen- Geändert von Alois (22-10-2003 um 11:08 Uhr) |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Oct 2003 Ort: Luzern
Beiträge: 33
|
Hallo Alois, das Skript, das mein eingelesenes XML in Arrays überträgt sieht so aus (die Funktion wird durch extract(); in Bild 7 des Hauptfilms aufgerufen, XMLObjekt.load ist in Bild 6): //Diese Funktion uebertraegt das eingelesene XML File in Arrays //Augerufen durch Bild 15 im Hauptfilm function extract(){ //Anfangsknoten der Ebene <movie> ermitteln xmlTemp1 = xmlInfos.firstChild.firstChild; //Attribut id der Ebene <movie> ermitteln tempNN1 = xmlTemp1.attributes.id; //Eine Ebene tiefer gehen xmlTemp2 = xmlTemp1.firstChild; //Schleife mit Abbruch, wenn tempNN1 = "eof" for(i=1; tempNN1 != "eof"; i++){ //Nur die Daten des richtigen Films im Array ablegen if(tempNN1 == _root.movie_ID){ //Mehrdimensionale Arrays eroeffnen //Die erste Dimension wird in Bild 1 des Hauptfilms eroeffnet aufgabe[_root.theMovie] = new Array(); main_text[_root.theMovie] = new Array(); info_text[_root.theMovie] = new Array(); fdbk_item[_root.theMovie] = new Array(); //Aufgaben einlesen, falls vorhanden if(xmlTemp2.nodeName == "aufgabe"){ for(j=1; xmlTemp2.nodeName == "aufgabe"; j++){ aufgabe[_root.theMovie][j] = unescape(xmlTemp2.attributes.text); //Sprung zum naechsten Knoten (main_text oder daten) xmlTemp2 = xmlTemp2.nextSibling; } } //Haupttext einlesen, falls vorhanden if(xmlTemp2.nodeName == "main_text"){ for(k=1; xmlTemp2.nodeName == "main_text"; k++){ main_text[_root.theMovie][k] = unescape(xmlTemp2.attributes.text); //Sprung zum naechsten Knoten (main_text oder daten) xmlTemp2 = xmlTemp2.nextSibling; } } //Daten einlesen, falls vorhanden //im hier vorliegenden Beispiel gibt es kein <daten> tag if(xmlTemp2.nodeName == "daten"){ k=1; while(xmlTemp2.nodeName == "daten"){ //Beim ersten Knoten, der <daten> heisst... daten[k] = unescape(xmlTemp2.attributes.horizont); daten[k] = new Array(); daten[k][1] = unescape(xmlTemp2.attributes.achse); daten[k][1] = new Array(); daten[k][2] = unescape(xmlTemp2.attributes.achse); daten[k][2] = new Array(); temp_horiz = xmlTemp2.attributes.horizont; m=1; while(xmlTemp2.attributes.horizont == temp_horiz){ //Nun werden alle <daten> Attribute durchgegangen //zuerst die mit dem Attribut s... temp_var = "s" + m; n=1; while(xmlTemp2.attributes[temp_var] != null){ daten[k][2][n] = xmlTemp2.attributes[temp_var]; n++; temp_var = "s" + n; } //Sprung zum naechsten Datensatz (x-Achse) xmlTemp2 = xmlTemp2.nextSibling; //dann die mit dem Attribut theta... temp_var = "theta" + m; n=1; while(xmlTemp2.attributes[temp_var] != null){ temp_var = "theta" + n; daten[k][1][n] = xmlTemp2.attributes[temp_var]; n++; temp_var = "theta" + n; } //Sprung zum naechsten Datensatz xmlTemp2 = xmlTemp2.nextSibling; m++; } k++; //Abbruch, wenn der Knoten nicht mehr <daten> heisst } } //Infotext einlesen, falls vorhanden if(xmlTemp2.nodeName == "info_text"){ for(k=1; xmlTemp2.nodeName == "info_text"; k++){ info_text[_root.theMovie][k] = unescape(xmlTemp2.attributes.text); //Sprung zum naechsten Knoten xmlTemp2 = xmlTemp2.nextSibling; } } //Feedbacktext einlesen, falls vorhanden if(xmlTemp2.nodeName == "fdbk_item"){ for(k=1; xmlTemp2.nodeName == "fdbk_item"; k++){ fdbk_item[_root.theMovie][k] = unescape(xmlTemp2.attributes.text); //Sprung zum naechsten Knoten xmlTemp2 = xmlTemp2.nextSibling; } } } //Nach dem Einlesen des gesamten <movie> Knotens zum naechsten <movie> springen xmlTemp1 = xmlTemp1.nextSibling; //tempNN1 aktualisieren tempNN1 = xmlTemp1.attributes.id; //xmlTemp2 aktualisieren xmlTemp2 = xmlTemp1.firstChild; } } Erklärung: Für den Fall, dass tempNN1 == _root.movie_ID (die movie_ID wird beim Laden mit übergeben), geht das Skript durch alle Knoten des jeweiligen <movie> Tags durch und legt den Inhalt in zwei bzw. dreidimensionalen Arrays ab. Kannst Du damit etwas anfangen? Gruss Andreas |
| | |
| | #4 (permalink) | |
| Level up Registriert seit: Jun 2001 Ort: Bocholt
Beiträge: 4.155
|
hmm..., hier ist wahrscheinlich schon der Fehler: Zitat:
ActionScript:
....aber genau das kann man hervorragend im XML-Objekt abfangen, dafür setzt Du in frame 6 ein stop() und fügst folgendes script zu: ActionScript:
Gruß Alois Edit: ...der scriptteil sollte vor XMLObject.load und hinter XMLObject = new XML stehen um in jedem Fall zu funktionieren
__________________ -Spuckt mir auf den Stuhl, ich will im Grünen sitzen- Geändert von Alois (22-10-2003 um 13:07 Uhr) | |
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Oct 2003 Ort: Luzern
Beiträge: 33
|
Alois, herzlichen Dank. Das scheint zu klappen. Ich muss es nun nur noch via Modem testen. Eigentlich ist die Lösung ja total simpel, aber manchmal hockt man einfach auf dem Kabel... Gruss aus Luzern Andreas |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |