| |||||||
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: Aug 2003
Beiträge: 62
| Jump 'n Run wird von Level zu Level langsamer
Hallo, die Überschrift sagt schon alles- ich bin gerade darüber, ein Jump 'n Run-Spiel zu programmieren, und je höher das Level ist, desto grösser ist die Prozessorlast. Das Spiel scheint immer mehr Abfragen zu machen. Die Level liegen in einem Film, der auf der Bühne liegt, hintereinander- d.h. wenn ein Level vorbei ist, springt der Film an eine spätere Stelle, z.B. von "Level1" zu "Level2". Nachdem ich zwei Ebenen gelöscht hatte, auf denen der Grossteil aller Hittest-Abfragen liegen, funktionierte das Spiel wieder schneller. Allerdings verstehe ich nicht, warum- hat Flash keinen Garbage Collector, der die Instanzen einer Ebene löscht, wenn der Film an eine Stelle springt, wo die Instanzen der älteren Level nicht mehr gültig sind? Muss ich nun alles per attachMovie und RemocveMovieClip regeln, das würde ich gerne vermeiden. Vielen Dank! Liebe Grüße, Mira |
| | |
| | #3 (permalink) | |
| Neuer User Registriert seit: Aug 2003
Beiträge: 62
| Zitat:
Daran kann es allerdings nicht liegen, denn ich habe es jetzt so umgeändert, dass der x-Wert bei 50 liegt, sprich noch auf der Bühne ist- und trotzdem ist der Fehler noch da. | |
| | |
| | #4 (permalink) |
| Flash-holic Registriert seit: Nov 2003 Ort: Neunkirchen(Saar)
Beiträge: 988
|
Naja, zumindest sind dann trozdem noch die goldstücke auf der Bühne -5000 oder 50 is doch wurscht. Intervalle am laufen? Kanns sein das du imemr neue intervalle startest oder so?
__________________ Wer Großes versucht, ist bewunderswert, auch wenn er fällt. Lucius Annaeus Seneca (ca. 4 v. Chr - 65 n. Chr.) |
| | |
| | #5 (permalink) |
| Der Alte Registriert seit: Nov 2003 Ort: Potsdam
Beiträge: 208
|
Genau das meinte ich. Es nützt dem Speicher nichts, wenn Du die Clips nur in den unsichtbaren Bereich verschiebst. Also entweder der Clip ist nicht mehr auf der Zeitleiste wenn er nicht gebraucht wird oder Du must dynamisch laden/entladen. |
| | |
| | #6 (permalink) |
| Neuer User Registriert seit: Aug 2003
Beiträge: 62
|
Nein, Intervalle starte ich nicht, falls es um die Funktionen setIntervall und ClearIntervall geht. Die Clips eines Levels sind im nächsten Level nicht mehr auf der Zeitleiste, weil entsprechende Keyframes gesetzt sind (sorry, ich habe die letzte Frage falsch verstanden, um zu viele Ecken gedacht..). Ein Beispiel für eine Sache, die das Spiel langsamer macht, ist folgende: es gibt in jedem Level die Instanzen r1, r2 und r3. Wenn das Männchen an eines stösst, wird die Instanz auf X: -5000 verschoben. Da diese Instanz im nächsten Level allerdings nicht mehr gültig ist (es gibt wieder Instanzen namens r1, r2 und r3, auch auf der gleichen Ebene, aber das sind neue), frage ich mich, warum das Spiel trotzdem mit der Zeit langsamer wird. |
| | |
| | #7 (permalink) |
| Flash-holic Registriert seit: Nov 2003 Ort: Neunkirchen(Saar)
Beiträge: 988
|
Tja, das hatte ich auch ma in nem Spiel, -1000 oder so .Is villeicht nich ganz geschickt, aber stört jetzt vllt auch nich. Hmmmm, was kanns denn sein? Kannste villeicht ein klein bisserl Code posten, bei dem du denkst es könnte was sein?
__________________ Wer Großes versucht, ist bewunderswert, auch wenn er fällt. Lucius Annaeus Seneca (ca. 4 v. Chr - 65 n. Chr.) |
| | |
| | #8 (permalink) |
| Der Alte Registriert seit: Nov 2003 Ort: Potsdam
Beiträge: 208
|
Leider bist Du einem Irrtum aufgesessen, wenn Du meinst, dass Deine neuen Instanzen die Alten ersetzen. Hab mal ein Experiment angefügt. Lass es im Testmodus laufen und lass Dir am Ende die Objekte auflisten. Es sind 2!. Eins auf der Bühne und eins im Abseits. Beide heißen "r1". Die Instanz wird also nicht "ungültig", nur weil Du den Namen recyclest. Dagegen kannst Du die ganze Instanz recyclen. Wenn z.B. ein Objekt irgendwo aus dem Bild rausfliegt, kannst Du es umpositionieren, so das es woanders wieder reinkommt. Die Hauptsache ist, die Dinger werden nicht immer mehr. |
| | |
| | #9 (permalink) |
| Flash-holic Registriert seit: Nov 2003 Ort: Neunkirchen(Saar)
Beiträge: 988
|
Das problem ist bei ihm wohl ganz einfach das er die Levels statisch macht, also auch die Objekte statisch positioniert, deswegen kann er die objekte auch nicht wieder verwenden, sonst wäre ein removeMovieClip ja das einfachste, aber ohne attacheMovie gehts eben nich
__________________ Wer Großes versucht, ist bewunderswert, auch wenn er fällt. Lucius Annaeus Seneca (ca. 4 v. Chr - 65 n. Chr.) |
| | |
| | #10 (permalink) |
| Neuer User Registriert seit: Aug 2003
Beiträge: 62
|
Mein Mitprogrammierer und ich haben inzwischen einiges ausprobiert. Erst, nachdem wir einen Teil der Objekte dynamisch geladen und wieder -entladen haben, geht es inzwischen wenigstens etwas schneller- also wirds wohl mit attachMovie/removeMovieClip laufen. Wir vermuten, es handelt sich entweder um einen Flash-Bug, bei dem der Garbage-Collector nicht richtig arbeitet (wobei das immer eine starke Behauptung ist..). Oder es liegt daran, dass wir das Spiel an sich in einer bestimmten Instanz drinnen haben, die wir allerdings von aussen steuern- d.h., könnte es sein, dass wenn man von Punkt A nach Punkt B in einem Movieclip springt, diesen Sprung aber von aussen steuert- dass dann die Instanzen von A nicht aufräumt werden, obwohl sie bei Punkt B nicht mehr gültig sind? @Billi_I: Vielen Dank für die Datei! Ich habe sie so umgeändert, wie es in meinem Spiel ist, und angehängt- die Instanzen sind tatsächlich nicht nebeneinander gültig. Die Testdatei hat mich jedenfalls weitergebracht.
|
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |