| |||||||
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: Sep 2010
Beiträge: 9
| Speicherverhalten bei .attachMovie/.removeMovieClip()
Hallo, kann mir jemand sagen was bei Flash intern passiert, wenn man bei onEnterFrame neue Movies ranhängt und diese entfernt? also z.B. folgender code AS2 Code: _root.onEnterFrame = function(){
++i
var cilj:MovieClip = _root.attachMovie("jet","jet"+i,i)
...
cilj.onEnterFrame = function(){
...
if(cilj._currentframe == 15){
cilj.removeMovieClip()
}
} aber was passiert mit dem Rest? Kann man sowas bedenkenlos bei einem Spiel einsetzen, welches über mehrere Stunden läuft? Wird der Speicher wieder sauber freigeschaufelt? Gibt es (wie bei java)einen Garbage Collector, der irgendwann anspringt Performance runter geht? |
| | |
| | #2 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.325
|
probiere es doch einfach aus. grundsätzlich funktioniert das. es werden mc's erzeugt, diese leben 15 frames lang und dann sterben sie wieder. gefühlsmässig würde ich die nicht ständig neu erzeugen. es langt, wenn man den objekten neue parameter gibt.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #3 (permalink) |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.163
|
Zwei ineinander verschachtelte onEnterFrame sind nicht so doll, aber wenn Du in jedem Frame einen neuen MC mit onEnterFrame erzeugen musst, grundsätzlich korrekt. Auf die Garbage Collection hast Du insbesondere in AS2 wenig Einfluss. Was ich nochmachen würde, wäre das onEnterFrame zu löschen, bevor Du den MC löschst: PHP-Code:
__________________ 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! |
| | |
| | #4 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.325
| .. nicht vorhanden ;-) schau dir den script nochmal genau an. und ist bei AS2 nicht nötig. mit dem mc stirbt auch sein onEnterFrame (im gegensatz zu AS3).
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (15-10-2010 um 16:54 Uhr) |
| | |
| | #5 (permalink) |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.163
| Hab ich, und da steht ein onEnterFrame in einem anderen: PHP-Code:
__________________ 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! Geändert von Martin Kraft (15-10-2010 um 17:11 Uhr) |
| | |
| | #6 (permalink) | |
| Neuer User Registriert seit: Sep 2010
Beiträge: 9
|
Jaja ist nicht mein Fehler, sondern Code aus nem Beispiel ![]() (und es is tatsächlich ein onEnterFrame in einem onEnterFrame) Ein mc array, bei dem ich abwechselnd mein mc zuordne wäre wohl die beste Option. Falls ich es aber nicht mache/machen kann, wie sauber wird mit .removeMovieClip() entfernt? bzw. mit anderen .remove oder =null; ? Zitat:
aber wenn ich viele Effekte haben will, die sowas machen, könnte evtl. etwas böses passieren | |
| | |
| | #7 (permalink) |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.163
| Ich denke schon, dass man das testen kann. Notier Dir einfach den Speicherverbrauch des Flashplayers im Taskmanager. Lass die SWF ein paar Stunden laufen und schau Dir an, ob der Verbrauch steigt.
__________________ 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! |
| | |
| | #8 (permalink) | |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.325
| Zitat:
das zweite onEnterFrame ist NICHT verschachtelt, sondern es ist ein onEnterFrame für die zeitleiste des eben neu erstellten objektes. dessen zeitleiste läuft, bis es frame 15 erreicht und wird danach zerstöhrt. es ist keineswegs gesagt bzw. hier ersichtlich, das dies auf direktem wege passiert. womit man das abzählen bis 15 NICHT für alle in einem globalen array ausführen sollte. bringt hier auch überhaupt keinen vorteil. in hinblick auf OOP sollte jedes objekt möglichst autark sein. es ist auch kein script, der direkt ausgeführt wird, sondern es ist die zuweisung einer namenlosen funktion in das onEnterFrame von cilj. und zu guter letzt, verschachtelte onEnterFrame's sind überhaupt nicht möglich! jedes weitere onEnterFrame auf das selbe objekt überschreibt den vorherigen eintrag. Havoc lass dir da nicht einreden, zumindestens dieser teil deines programmes ist korrekt (bzw. der/die-jenige beispielersteller hat sich durchaus was dabei gedacht). nochmals zu deiner eigentlichen frage: nach dem löschen gibts ein loch im RAM das nicht direkt und vollständig durch andere objekte gefüllt werden kann. deshalb hin und wieder das aufräumen. das sollte/könnte weniger sein, wenn die objekte nicht gelöscht, sondern wieder verwendet werden. das ist aber sehr hypothetisch gedacht und ich vermute, es ist kaum nachweissbar obs wirklich etwas bringt. lass dein programm mal über nacht laufen, wenns am nächsten morgen noch lebt und nicht mehr speicher benötigt (z.b. im tastmanager ansehen) dann sollte das auch noch länger laufen.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de | |
| | |
| | #9 (permalink) |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 6.163
| @hgseib: Ich habe durchaus gesehen, dass die onEnterFrames zu verschieden Objekten gehören und sich deshalb nicht überschreiben. Was wohl das ist, was Du unter "verschachtelt" verstehst. Generel bedeutet "verschachtelt" aber nichts anderes, als dass sich etwas in etwas anderem befindet - also z.B. eine Funktion in einer anderen deklariert wird. Mal abgesehen davon, dass das vorliegende AS1-Script mit OOP nicht viel zutun hat, finde ich es auch in dieser Hinsicht sinnvoll, dass ein übergeordnetes Objekt seine Unterobjekte über ein Array verwaltet und diese sich nicht einfach eigenmächtig hinzufügen oder löschen können. Nur so hat man ausreichende Kontrolle über ihre Anzahl! Was den Performancetest angeht, scheinen wir uns ja einig zu sein!
__________________ 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! Geändert von Martin Kraft (18-10-2010 um 10:24 Uhr) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [Flash CS3] attachMovie removeMovieClip | czc | Flash Einsteiger | 14 | 23-01-2009 16:36 |
| attachMovie und removeMovieClip | wanst | ActionScript 2 | 6 | 27-06-2008 11:34 |
| attachMovie() - removeMovieClip() | Kenji | Flash 8 | 5 | 27-04-2008 21:31 |
| attachMovie und removeMovieClip | Jakozk | ActionScript 2 | 4 | 25-04-2006 18:47 |
| attachMovie und removeMovieClip | hdance | Flash MX | 1 | 23-10-2005 17:48 |