| |||||||
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) |
| immer gerne hier Registriert seit: Sep 2005
Beiträge: 347
|
Hallo Ich habe ein problem: Ich habe ein Weltraum spiel, für das ich verschiedene Sterne gemacht habe. Diese Sterne fliegen mit unterschiedlicher Geschwindigkeit und werden wenn sie unter den Bildschirmrand kommen sofort gelöscht. Jetzt lass ich das teil 5 minuten laufen und es ist so langsam dass man sich nicht mehr bewegen kann... Warum? Löscht removeMovieClip nicht aus dem Speicher? Was ist falsch? Hier noch die funktion, aber die sollte ja nicht viel bringen weil ich alles schon gesagt habe: Code: function drawStars() {
_root.stars.rand = random(1000);
if (_root.stars.rand>575) {
_root.stars.star = "star02";
_root.stars.yspeed = Math.random()*4+2;
} else if (_root.stars.rand>75) {
_root.stars.star = "star04";
_root.stars.yspeed = Math.random()*3+3;
} else if (_root.stars.rand>10) {
_root.stars.star = "star05";
_root.stars.yspeed = Math.random()*2+0.1;
} else if (_root.stars.rand>5) {
_root.stars.star = "star01";
_root.stars.yspeed = Math.random()+1;
} else {
_root.stars.star = "star03";
_root.stars.yspeed = Math.random()+1;
}
_root.stars.attachMovie(_root.stars.star, "star"+_root.stars.getNextHighestDepth(), _root.stars.getNextHighestDepth(), {_x:random(550), _y:(random(10)-10), yspeed:(_root.stars.yspeed)});
for (var forvar:Number = 0; Number(forvar)<_root.stars.getNextHighestDepth(); forvar++) {
if (typeof (_root.stars["star"+forvar]) == "movieclip") {
if (_root.stars["star"+forvar]._y>385) {
removeMovieClip(_root.stars["star"+forvar]);
} else {
_root.stars["star"+forvar]._y += _root.stars["star"+forvar].yspeed;
}
}
}
} Kenji EDIT: Was mir jetzt noch grad aufgefallen ist: es ist nicht klever, die forschleife zu _root.stars.getNextHighestDepth() zu machen, da vielleicht der "star1" grad verschwindet und es das movement somit nur für "star0" wahrnimmt, da _root.stars.getNextHighestDepth() ja 1 ist... naja da arbeite ich noch dran ;-) EDIT2: Ich bau wohl besser ein _root.stars["star"+forvar].onEnterFrame = function() {...} für die Bewegung ein, dann muss nicht immer eine Forschleife ran...
__________________ Flashforum-Könige: der Frager und hgseib. Ein fettes Lob an die beiden für unendliche Hilfsbereitschaft. Erfahrung mit: Actionscript 2, 3, PHP, MySQL, HTML, CSS, .htaccess, JavaScript, C++, Pascal Interese für: Sicherheit, Kryptologie, Performance Geändert von Kenji (26-04-2008 um 19:43 Uhr) |
| | |
| | #2 (permalink) |
| Euer Nuser Registriert seit: Apr 2004 Ort: Sand-City
Beiträge: 3.483
|
Wenn Du einen MovieClip removen willst, musst Du ihn erst auf eine Tiefe > 0 setzen, ansonsten schlädt removeMovieClip fehl. Daher sicher auch das Ruckeln ![]() ActionScript:
__________________ Die Krinimalpolizei gibt bekannt: |
| | |
| | #3 (permalink) |
| immer gerne hier Registriert seit: Sep 2005
Beiträge: 347
|
EDIT: Nein der FPS-Checker zeigt mir immer weniger fps an und alles wird langsam, hat wohl nichts gebracht. Habs mir doch gedacht. Hmmm, aber get next highest depth ist doch immer positiv... Und alle movieclips verschwinden auch unter dem bildschirm... Aber ich probiers mal. Danke. Gruss Kenji
__________________ Flashforum-Könige: der Frager und hgseib. Ein fettes Lob an die beiden für unendliche Hilfsbereitschaft. Erfahrung mit: Actionscript 2, 3, PHP, MySQL, HTML, CSS, .htaccess, JavaScript, C++, Pascal Interese für: Sicherheit, Kryptologie, Performance Geändert von Kenji (27-04-2008 um 00:06 Uhr) |
| | |
| | #4 (permalink) |
| Euer Nuser Registriert seit: Apr 2004 Ort: Sand-City
Beiträge: 3.483
|
Hm ... wenn die Sterne verschwinden dann werden sie auch korrekt removed. Normalerweise beginnt getNextHighestDepth() ab -16000 minus ein paar Hundert. removeMovieClip() kann aber nur erfolgreich auf alle Tiefen > 0 angewendet werden. Aber wurscht ... Es wäre prinzipiell am besten die Funktion für die Sterne als Intervall aufzurufen. Jeder attachte Stern kriegt einen onEnterFrame angehängt und verschiebt/überprüft selbst seine Position auf der Bühne und removed sich dann. Poste doch mal eine Beispielfla (nur mit Sternen). Dann kann ich das hier mal angucken
__________________ Die Krinimalpolizei gibt bekannt: |
| | |
| | #5 (permalink) |
| immer gerne hier Registriert seit: Sep 2005
Beiträge: 347
|
Hallo Hier ist das ganze .fla. Anhang 51947 Also die millisekunden pro Frame erhöhen sich ständig, wenn sie über 33ms/frame sind wird die FPS kleiner. Ich würd das nicht in den Stern.onEnterFrame tun, da ich eine "pause" funktion reintun will und ich nicht jeden einzelnen Stern kontrollieren kann wenn er sich selbst bewegt.
__________________ Flashforum-Könige: der Frager und hgseib. Ein fettes Lob an die beiden für unendliche Hilfsbereitschaft. Erfahrung mit: Actionscript 2, 3, PHP, MySQL, HTML, CSS, .htaccess, JavaScript, C++, Pascal Interese für: Sicherheit, Kryptologie, Performance Geändert von Kenji (11-06-2008 um 17:51 Uhr) |
| | |
| | #6 (permalink) |
| immer gerne hier Registriert seit: Sep 2005
Beiträge: 347
|
Hmmmmm. Im flashforum wirds auch immer ruhiger. Wo bleibt eigentlich "Der Frager"? Er hat mir glaube ich bei jedem Problem eine super Lösung aufgetischt ![]() EDIT: Also DAS ist ja interessant. Wenn ich den attachten stern sofort wieder lösche bleibt die FPS konstant... SEHR interessant. Ich glaube ich hab den Fehler: getNextHighestDepth() zählt laufend rauf, ich weiss zwar nicht wieso (wenn doch star1 entfernt ist, dann ist ebene 1 wieder frei), aber ich habs, glaube ich. EDIT2: AHA da haben wirs! getNextHighestDepth() fängt nur wieder bei 1 an wenn kein einziger movieclip mehr in _root.stars ist. Und weil das nie der fall ist, muss die Forschleife immer weiter raufzählen.
__________________ Flashforum-Könige: der Frager und hgseib. Ein fettes Lob an die beiden für unendliche Hilfsbereitschaft. Erfahrung mit: Actionscript 2, 3, PHP, MySQL, HTML, CSS, .htaccess, JavaScript, C++, Pascal Interese für: Sicherheit, Kryptologie, Performance Geändert von Kenji (27-04-2008 um 21:52 Uhr) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |