Zurück   Flashforum > Flash > Mobile Flash und Flash Lite

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 10-02-2012, 15:17   #1 (permalink)
Neuer User
 
Registriert seit: Nov 2011
Beiträge: 24
Framerate zu niedrig - Framerate analysieren

Hallo, ich bin dabei, eine kleine Flashanwendung für mein handy zu erstellen.
Dabei lade ich unter anderem ein paar externe SWF's in dafür vorgesehene Platzhalter und dann soll man durch Sliden alle SWF's verschieben können. Das klappt auch schon ganz gut, nur zieht das die Framerate ziemlich nach unten auf ca. 5 fps. Dabei ist es egal, ob man die SWF's sieht oder ob sie überdeckt sind oder ob ich sie alle mit unloadMovie() entlade.

Ich denke mir, dass da ein script läuft, was alles ausbremst, da auch wenn die SWF's nicht verschoben werden, die Framerate sehr niedrig ist.
Ein Script, das jeden Frame läuft, braucht nach der getTimer()-Zeitdifferenz nur 20ms, das ist nicht so schlimm.

Jedenfalls würde ich gerne wissen, ob man herausfinden kann (auch durch getTimer()), wie lange das Rendern eines Frames braucht und wie lange die scripts, damit man den Fehler eingrenzen kann.

Geändert von hugo123 (10-02-2012 um 19:12 Uhr)
hugo123 ist offline   Mit Zitat antworten
Alt 18-02-2012, 17:12   #2 (permalink)
Neuer User
 
Registriert seit: Nov 2011
Beiträge: 24
Schön, dass ich so viele Lösungsvorschläge bekomme

Ich wollte noch ergänzen, dass es vermutlich am Rendern liegt, da die scripts nach einer Messung insgesamt alle nur ca. 10 ms brauchen.

Mir ist aufgefallen, dass ausgeblendete Objekte trotzdem neu gezeichnet werden (Bildaktualisierungsbereiche anzeigen), obwohl man sie überhaupt gar nicht sehen kann.

Gibt es eine Möglichkeit, das zu verhindern?
hugo123 ist offline   Mit Zitat antworten
Alt 18-02-2012, 18:53   #3 (permalink)
i ate pixels
 
Benutzerbild von pixelslave
 
Registriert seit: Mar 2004
Ort: Augsburg
Beiträge: 528
Zitat:
Zitat von hugo123 Beitrag anzeigen
Schön, dass ich so viele Lösungsvorschläge bekomme

Ich wollte noch ergänzen, dass es vermutlich am Rendern liegt, da die scripts nach einer Messung insgesamt alle nur ca. 10 ms brauchen.

Mir ist aufgefallen, dass ausgeblendete Objekte trotzdem neu gezeichnet werden (Bildaktualisierungsbereiche anzeigen), obwohl man sie überhaupt gar nicht sehen kann.

Gibt es eine Möglichkeit, das zu verhindern?
Jo. Setzt die visible Eigenschaft auf false.

Grüße
pixelslave ist offline   Mit Zitat antworten
Alt 20-02-2012, 12:16   #4 (permalink)
Neuer User
 
Registriert seit: Nov 2011
Beiträge: 24
Danke.

Hat funktioniert.

Da ich gehört habe, dass Alpha unheimlich Rechenzeit braucht, würde ich gerne wissen, was am meisten bremst:
-Ein Bild (zum Beispiel png Format), das transparenz beinhaltet,
-Ein Movieclip, der mit dem alpha Wert transparent gemacht wird oder
-Eine Vektorform, die mit einer durchsichtigen Füllung gefüllt ist.

Meiner Meinung nach gibt es da Unterschiede, oder irre ich mich?
(Zum Vergleich müssen natürlich alle drei Objekte gleiche Form, Farbe, Transparenz und Füllung haben)
hugo123 ist offline   Mit Zitat antworten
Alt 20-02-2012, 14:42   #5 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.500
Das hängt vor allem davon ab, was du mit dem DisplayObject machst. Wenn es ums verschieben geht, dann sind pngs besser, aber alles andere auch ok, wenn du cacheAsBitmap aktivierst. Wenn du aber drehst oder skalierst kommt es darauf an wie komplex die Sprites/MovieClips sind.

Die Problematik mit alpha wird dann natürlich nochmal immer größer, je mehr Objekte überlappen.
__________________

flintfabrik.de

Geändert von shin10 (20-02-2012 um 14:44 Uhr)
shin10 ist offline   Mit Zitat antworten
Alt 20-02-2012, 22:00   #6 (permalink)
Neuer User
 
Registriert seit: Nov 2011
Beiträge: 24
Kann es auch sein, dass die Leistung mit jedem Movieclip, der zur Szene dazu kommt, aber nicht sichtbar oder im RAM ist, stark zurückgeht?
hugo123 ist offline   Mit Zitat antworten
Alt 21-02-2012, 01:33   #7 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
stark ist relativ, aber die Performance sinkt mit jedem Objekt und jedem Vektor* auf der Bühne das visible ist.

alpha=0 bedeutet nicht, dass ein Objekt nicht gerendert werden muss
und woher soll Flash Wissen, ob ein Objekt verdeckt ist, bevor es das teil (und alles darüber) gezeichnet hat?
Also visible verwenden, und damit alle Objekte ausblenden, die nicht sichtbar sind/sein sollen.

* ja ich mein die einzelnen Linien. paar hundert Vektoren ohne cacheAsBitmap, und Flash fängt an zu stocken. (Die genaue Anzahl hängt von der jeweiligen Hardware ab)
__________________
greetz Thomas

plz RTFM & Coding Conventions
thomas_E ist gerade online   Mit Zitat antworten
Alt 21-02-2012, 10:22   #8 (permalink)
Neuer User
 
Benutzerbild von andrelehnert
 
Registriert seit: Oct 2007
Ort: Kölle
Beiträge: 1.232
Filter sind auch teuer...
__________________
Die Hoffnung stirbt zuletzt.
Aber sie stirbt.
andrelehnert ist gerade online   Mit Zitat antworten
Alt 21-02-2012, 11:19   #9 (permalink)
Neuer User
 
Registriert seit: Nov 2011
Beiträge: 24
Zitat:
Zitat von andrelehnert Beitrag anzeigen
Filter sind auch teuer...
Filter gehen überhaupt nicht auf dem Handy, wo das ganze dann später laufen soll. Die werden einfach ignoriert.

Mein Problem ist, dass mein ganzer Flashfilm ohne Gründe einfach so auf 5-12 Fps im leerlauf bleibt, obwohl er NICHTS aktualisieren, neuzeichen oder anderes machen muss. Vorher hat er im Leerlauf immer locker über 30 geschafft.
Dass es an einem Script liegt, schließe ich aus, da kein Script ca. 140 ms braucht.

Das einzige, was er aktualisieren muss, ist ein kleines Textfeld, das die Framerate anzeigt. Damit hat er aber auch schon mal die 30 fps erreicht.
Sonst ist nichts, kein Alpha, keine Filter, keine Vektoren, nur ein dynamisch geladenes Bild, und drei 60x60 movieclips.
Ich hänge mal ein bild an. (Screenshot aus Device Central)

Ich hänge jetzt schon seit ca. einem Monat daran fest und es regt mich so auf.

Bitte helft mir.
Angehängte Grafiken
Dateityp: png screenshot.png (71,5 KB, 7x aufgerufen)

Geändert von hugo123 (21-02-2012 um 11:21 Uhr)
hugo123 ist offline   Mit Zitat antworten
Alt 21-02-2012, 13:05   #10 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
wenn die Performaceeinbrüche zyklisch kommen würde ich evtl noch auf die Garbage Collection tippen, aber ohne quellcode kann man nicht mehr viel sagen. Ich zumindest nicht.

Die üblichen Verdächtigen wurden ja bereits genannt.

Wenn du den Quellcode nicht zeigen möchtest, wäre evtl noch Blitting ein Thema, dass du dir ansehen könntest, und dass Geschwindigleit bringen kann; allerdings zu lasten des Arbeitsspeichers.

edit: ach ja, der exzessive Einsatz von ENTER_FRAME-handlern, ist auch noch ein häufiger Fehler bim Umstieg von AS1/2 nach AS3. Besser einen main-loop erzeugen, und alles andere darin aufrufen.

wie du siehst, gibt es eine menge Möglichkeiten, wie man ein Programm optimieren oder versauen kann, und ich kann deinen Programmierstil auch nicht abschätzen, also wäre es am besten, wenn du den Quellcode zeigen könntest.
__________________
greetz Thomas

plz RTFM & Coding Conventions

Geändert von thomas_E (21-02-2012 um 13:13 Uhr)
thomas_E ist gerade online   Mit Zitat antworten
Alt 21-02-2012, 14:51   #11 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.165
  • Was für ein Handy ist das denn überhaupt? Ein Smartphone? Welches Betriebssystem?

  • Läuft darauf der normale FlashPlayer oder tatsächlich nur FlashLite?

  • Welche AS-Version verwendest Du?
Wenn der Flashfilm tatsächlich der Hintergrund des "Desktops" ist, könnte ich mir vorstellen, dass das System selbst für diese miese Performance verantwortlich ist...
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!
Martin Kraft ist gerade online   Mit Zitat antworten
Alt 21-02-2012, 16:32   #12 (permalink)
Neuer User
 
Registriert seit: Nov 2011
Beiträge: 24
Also, das Handy ist ein Samsung S5230 Star, hat ein eigens von Samsung entwickeltes BS und darauf läuft Flash Lite 3.1 mit AS 2.

Das BS ist nicht Schuld, da es ja schon einmal wunderbar flüssig funktioniert hat und ich nicht wirklich sagen kann, was jetzt anders wäre.

Das ist bereits der zweite Anlauf für das Projekt, weil ich im ersten eher noch mehr geübt als richtig vorwärtsgekommen bin.
Ich habe im ersten Projekt einfach zu lange Zeitleisten genommen und zu viele Tweens und lauter Anfängerfehler.

Jetzt habe ich ein paar grundlegende Neuerungen eingebaut, zum Beispiel eine Funktion in der _root-Ebene, wo wichtige Funktionen liegen, auf die alle Objekte (auch dynamisch nachgeladene) zugreifen können. dort ist auch eine Funktion, die ich ganz häufig brauche, die per onEnterFrame-Ereignis Objekte bewegt, skaliert, dreht usw. , sodass eine Animation dabei rauskommt. (makeCubicAnimation)

Ich lade die .fla mal hoch, ihr könnt auch gerne noch ein paar andere Tipps dazu posten, wenn euch was auffällt, was man besser machen könnte.
(ich denke, ich hab zu viele MC's)

Wenn was unklar ist, dann bitte fragen.

Alle zusätzlichen Dateien, die dynamisch nachgeladen werde, braucht man nicht wirklich, da es mir in erster Linie nur um die Perfomance geht und auch ohne diese externen Dateien die Perfomance schon im [Zensiert] ist.

Bitte helft mir.


edit: ach ja, dieses swf IST der Homescreen, deshalb kann man durch fscommand's bestimmte Sachen starten oder Werte vom BS abrufen.
Angehängte Dateien
Dateityp: zip quellcode.zip (1,14 MB, 2x aufgerufen)

Geändert von hugo123 (21-02-2012 um 16:34 Uhr)
hugo123 ist offline   Mit Zitat antworten
Alt 21-02-2012, 16:46   #13 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Ort: Oldenburg
Beiträge: 2.408
Ist jetzt nicht böse gemeint, aber wofür soll das Ganze gut sein?? Ist ja doch etwas "out of date" ?
__________________
Mein Blog
Freue mich über jeden Besucher. :)
Nico B. ist offline   Mit Zitat antworten
Alt 21-02-2012, 16:52   #14 (permalink)
Neuer User
 
Registriert seit: Nov 2011
Beiträge: 24
Zitat:
Zitat von Nico B. Beitrag anzeigen
Ist jetzt nicht böse gemeint, aber wofür soll das Ganze gut sein?? Ist ja doch etwas "out of date" ?
Das Handy? Oder was meinst du?

Ich bin nicht der einzige, der solche neue Homescreens erstellt.
Das Handy gibt es immer noch zu kaufen, hat alles was man braucht, ich hab den original Homescreen (auch ne swf) 'entschlüsselt', weiß, wie man alles vom BS ansteuert, jetzt muss ich das nur noch in ne schöne Form packen.

Und das tue ich damit.
hugo123 ist offline   Mit Zitat antworten
Alt 21-02-2012, 18:18   #15 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.500
Vielleicht ist einfach das Textfeld zu schmal.
__________________

flintfabrik.de
shin10 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Framerate in AS2? klickverbot ActionScript 2 6 09-12-2006 18:12
Framerate MAC / PC octopus Flash 4 und Flash 5 3 24-09-2004 23:30
Framerate vom swf MattiMST Flash MX 4 21-05-2004 08:44
framerate fredo Flash MX 3 16-07-2003 22:07
framerate MAC/WIN LoRMiddleCLass Flash MX 6 04-02-2003 10:33


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:26 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele