Zurück   Flashforum > Flash > ActionScript > ActionScript 2

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 28-10-2008, 09:49   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2002
Beiträge: 219
Skript wird immer langsamer

Hi alle,

ich programmiere gerade eine Anwendung, in der der Benutzer in einem Anzeigebereich herumscrollen und -zoomen kann. Dabei muss der Inhalt dieses Anzeigebereichts -- bestehend aus einfachen Haarlinien -- ständig neu gezeichnet werden (ein bisschen so wie bei Google Earth: es werden immer nur die Linien gezeichnet, die auch sichtbar sind). So etwas habe ich noch nicht gemacht und bin gerade dabei zu testen, ob das von der Performance überhaupt machbar ist.

Und dabei stoße ich auf ein seltsames Phänomen: Die Sache läuft am Anfang glatt, aber je mehr ich die Inhalte herumschiebe (d.h.: je öfter sie gelöscht und neu gezeichnet werden) desto zäher wird es. Das kann ja eigentlich nur an einem Programmierfehler meinerseits liegen.

Was ich bei jedem Neuzeichnen mache:
- Ich lege für jeden Linienzug (ca. 40 Stück) einen neuen Movieclip an
- In die jeweiligen Movieclips zeichne ich mit lineTo()

Beim nächsten Neuzeichnen lösche ich die alten Movieclips der Linienzüge mit removeMovieClip und fange wieder von vorne an.

Anscheinend bleiben trotz removeMovieClip() irgendwie Daten "liegen" und verlangsamen das Skript zusehends. Hat jemand einen Tipp für mich, was ich vergessen habe? Könnte es daran liegen, dass immer wieder getNextHighestDepth() aufgerufen wird? Oder dass die neuen MovieClips die gleichen Namen bekommen wie die gerade gelöschten?

-- snorri


PS: Was mir auch auffällt: Das Schließen des Flash-Fensters nach viel Herumscrollen dauert viel länger (~ 1 Sekunde) als wenn ich es ohne Herumscrollen gleich schließe. Anscheinend muss da durch Flash noch einiges "aufgeräumt" werden.

Geändert von sterlu (28-10-2008 um 09:52 Uhr)
sterlu ist offline   Mit Zitat antworten
Alt 28-10-2008, 10:33   #2 (permalink)
Der Wunderhund
 
Benutzerbild von gaspode
 
Registriert seit: Jun 2002
Ort: Hattingen
Beiträge: 10.515
Du könntest einfach 40 MovieClips anlegen und diese aber nicht
bei jedem Durchgang wieder löschen sondern nur ihren gezeichneten
Inhalt löschen mit clear().

Eigentlich müßte das aber auch alles in nur einem MovieClip gehen.

gruß, gaspode
gaspode ist offline   Mit Zitat antworten
Alt 28-10-2008, 11:05   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2002
Beiträge: 219
Ha, DIE Funktion hatte ich doch gesucht -- nur unter dem Namen emptyMovieClip()

Danke, das läuft schon viel reibungsloser. Mal sehen, ob es ausreicht ...

-- snorri
sterlu 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 12:37 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele