| |||||||
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) |
| Linksaußen Registriert seit: Jun 2003 Ort: Essen
Beiträge: 552
| Fehlersuche
Hallo, ich habe einen recht komplexen Flashfilm mit vielen Codeschnipseln. Es ist mittlerweile ein recht umfangreiches Programm. Umso schwieriger gestaltet sich die Fehlersuche... ![]() Ab und zu bekomme ich die klassische Killermeldung: Code: Flash Player wird durch ein Skript in diesem Film verlangsamt. Wenn das Skript weiterhin ausgeführt wird, reagiert der Computer möglicherweise nicht mehr. Möchten Sie die Ausführung des Skripts abbrechen? Leider ist dieser Fehler momentan nur schwer reproduzierbar, da er nicht regelmäßig auftritt. Mit dem Debug-Modus kenne ich mich (noch) gar nicht aus... noch etwas anderes: Kann es sein, dass sich Actionscript in einer im Browser eingebetteten SWF anders verhält?? Ich habe in meinem Flashfilm ein paar Fehler (betrifft lineTo), die nur im Opera auftreten, nicht aber in der Flash-Entwicklungsumgebung.
__________________ Der Ball ist rund |
| | |
| | #2 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.326
|
wenn du z.b. irgendwo eine schleife hast, die 10.000 mal durchlaufen wird .. oder sonst irgend etwas, was sehr lange dauert. das musst du aufteilen und z.b. stückchenweisse in onEnterFrame's abarbeiten. wo du das gemacht hast, das musst du selbst wissen. das problem ist z.b. auch (bei so langen, nicht gestückelten, also nicht flash-gerechten scripten) das es auf deinem rechner vielleicht geht, aber bei einem leistungsschwächeren rechner (oder viele programme zusätzlich geöffnet), dass es dann nicht mehr geht.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #3 (permalink) |
| Linksaußen Registriert seit: Jun 2003 Ort: Essen
Beiträge: 552
|
Natürlich weiss ich, wo überall schleifen im Code sind. Aber herauszufinden, welche davon die Probleme bereitet ist dadurch äußerst schwierig. Ich habe grundsätzlich in vielen Funktionen immer trace-Befehle drin, damit ich besser nachvollziehen kann, wo im Code ich mich gerade befinde. Eigentlich müsste Flash doch wissen, an welcher Stelle im Code (Programmzeile) der Player hängt... zu 2.: Du meinst eine Schleife mit X Durchläufen läuft auf dem starken Rechner immer durch, während bei einem schwachen die Toleranz überschritten wird und der Flashplayer meckert? Es könnte also sein, dass so eine Meldung in gewissen Fällen gar nicht durch einen echten Fehler in der Programmierung hervorgerufen wird?
__________________ Der Ball ist rund |
| | |
| | #4 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.326
|
trace trace selbst kostet extrem viel zeit (kannst du übrigens bei 'einstellungen für veröffentlichungen' ein-/ausschalten) sowas nur themporär verwenden und danach zumindestens auskommentieren. ich habe i.d.R. eine eigene debug-klasse und verwalte die mit flags (je nachdem, was ich gerade überprüfen will). "..an welcher Stelle im Code (Programmzeile) der Player hängt..." das zu wissen nützt garnichts. die gesamtzeit ist überschritten worden. das ganze dauert zu lange, und nicht der letzte befehl (p.s. ab flash 9 kann man diese zeit einstellen/verändern). "..auf dem starken Rechner immer durch, während bei einem schwachen.." nicht immer, aber grundsätzlich: ja es gibt filme (.avi, mpeg, usw.) deren software ist so, das die zeit eingehalten wird. notfalls wird ein frame übersprungen, hautpsache das ding ist lippensynchron. bei animationen (swf, direktor, usw.) bei denen sich ein frame aus den daten des vorherigen frames aufbaut, da darf natürlich kein frame entfallen. folgerichtig kann nicht für die ablaufzeit garantiert werden. zuerst setzt flash automatisch die framerate herunter und wenn das nicht langt, dann 'mäckert' flash. schliesslich ist die primäre aufgabe von flash eine animation zu zeigen und nicht 'den urknall zu berechnen'. also wenn das bei dir der fall ist, dann hast du flash gewaltig 'missbraucht' ;-)
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #5 (permalink) | |||
| Linksaußen Registriert seit: Jun 2003 Ort: Essen
Beiträge: 552
|
Erstmal: Frohes Neues nachträglich! ![]() Zitat:
Zitat:
Zitat:
Allerdings stellt sich trotzdem noch diese Frage: Kann es sein, dass sich Actionscript in einer im Browser eingebetteten SWF anders verhält?? Ich habe in meinem Flashfilm ein paar Fehler (betrifft lineTo), die nur im Opera auftreten, nicht aber in der Flash-Entwicklungsumgebung.
__________________ Der Ball ist rund Geändert von Fralle (05-01-2010 um 11:30 Uhr) | |||
| | |
| | #6 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.326
|
a) das sprengt hier den rahmen b) nöö, so nicht. sorry, dann musst du 'sauberer' programmieren. u.a. z.b. a>=b anstatt a==b besonders bei zahlen kann es durch rundungsfehlern zu geringen abweichungen kommen. dann ist es halt nicht mehr gleich. oder z.b. AS2 ist interpreter und damit ist ein undefined kein fehler, kann aber zu falschen ergebnissen führen. als programmierer bis du selbst dafür verantwortlich, das alles so ist, wie du dir das vorstellst. der computer kann das nicht wissen oder erkennen. sonst wäre er ja schlauer als du ;-) usw. da gibt es keine einfache und schnelle lösung. selbst erfahrene programmierer suchen manchmal tagelang nach der ursache von einem fehler. dir bleibt nur eins: mit dem debugger das programm step für step durchgehen
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (05-01-2010 um 11:33 Uhr) |
| | |
| | #7 (permalink) | ||
| Linksaußen Registriert seit: Jun 2003 Ort: Essen
Beiträge: 552
| ...das war vermutlich auf die Frage nach der genaueren Erläuterung gemeint. ok. Grundsätzlich habe ich auch vor, AS3 richtig zu lernen. Tue mir aber mit dem Anfang schwer. Vielleicht hast Du da einen guten Tip (Tutorial, Literatur)? Worauf ist das bezogen? Zitat:
Code: for (i = 1; i<10; i++) Code: for (var i = 1; i<10; i++) Code: for (var i:Number = 1; i<10; i++) Zitat:
Das Arbeiten mit dem Debugger muss ich mir noch angewöhnen. Allerdings habe ich aktuell das Problem, dass dieser Fehler eben erst im Browser auftaucht und nie in der Entwicklungsumgebung.
__________________ Der Ball ist rund | ||
| | |
| | #8 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.326
|
a) ja b) mein nöö bezieht sich auf dein nee-text ;-) ein swf wird mit einem plugin ausgeführt und da gibts keine unterschiedlichen für browser, sondern nur eins. unterschiede gibt es, wenn man das swf 'verlässt'. beim laden z.b. wird der browser und/oder das betriebssystem beauftragt - dann sind unterschiede 'normal'. c) var i:Number; for (i= 1; i<10; i++) nützt aber nicht immer etwas, da AS2 nicht strikt type-isiert. hier hilft nur 'preusische' disziplien und variable immer definieren und testen var i:Number=0; if (i) .. d) "..dass dieser Fehler eben erst im Browser auftaucht und nie in der Entwicklungsumgebung.." such mal in der flash-hilfe nach: remote debuggen du kannst auch im browser dein swf debuggen. kann aber nicht sein. eine endlosschleife wird auch in der flash-umgebung angemahnt.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| bin auf fehlersuche :p | mortifarus | ActionScript 1 | 3 | 14-01-2007 12:23 |
| fehlersuche | nemaxtowni | Flash MX 2004 | 1 | 08-07-2004 16:12 |
| Fehlersuche | Oberonal | ActionScript 1 | 1 | 08-07-2004 00:08 |
| Fehlersuche | Oberonal | ActionScript 1 | 3 | 19-11-2003 18:15 |