Animation stoppt das Spiel ;-(
Übersicht

![]() |
ApprauuuuBetreff: Animation stoppt das Spiel ;-( |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi Leute !
Ich hab ein kleines Problem... Ich will es machen, dass wenn man ein gegnerisches Raumschiff abballert, ne Explosion kommt.... Ich hab die Animation für die Explosion in ner extra FUnction, aber das macht es irgendwie, dass der Rest des Spiels stehen bleibt, während die Explosion abläuft.... Hier mal ein paar Ausschnitte aus dem Code: wenn man diesen gegner hier plättet Zitat: Function gegner1()
If leben_gegner(gegner_array) > 0 Then x_gegner(gegner_array) = x_gegner(gegner_array) + 3 Else gegner_tot(gegner_array) = 1 explosion_function x_gegner(gegner_array) = 2000 EndIf End Function soll diese Explosion hier kommen: Zitat: Function explosion_function()
explosion = LoadAnimImage("Bilder\Explosion\explosion1.bmp", 64, 100, 0, 9) For explosion_animation = 0 To 8 DrawImage explosion, x_gegner(gegner_array), y_gegner(gegner_array), explosion_animation Flip Next Kann mir vielleicht jemand helfen ?? |
||
![]() |
Gossi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du kannst in der Funktion nicht einfach explosion_function() aufrufen. klar dass das Programm dann steht. Statt dessen musst du dort eine globale Variable ändern (oder eine lokale zurückgeben), sodass die explosion LIVE in deiner Hauptschleife ablaufen kann! Also mit der Funktion nur die Animation AKTIVIEREN, aber nicht AUSFÜHREN! | ||
Alle Wasser laufen ins Meer, doch wird das Meer nicht voller; an den Ort, dahin sie fließen, fließen sie immer wieder. (...) Was geschehen ist, eben das wird hernach sein. Was man getan hat, eben das tut man hernach wieder, und es geschieht nichts neues unter der Sonne. Geschieht etwas, von dem man sagen könnte: "Sieh, das ist neu"? Es ist längst vorher auch geschehen in den Zeiten, die vor uns gewesen sind. |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Function explosion_function()
explosion = LoadAnimImage("Bilder\Explosion\explosion1.bmp", 64, 100, 0, 9) For explosion_animation = 0 To 8 DrawImage explosion, x_gegner(gegner_array), y_gegner(gegner_array), explosion_animation Flip Next betrachte das ganze aus der sicht deines Rechners: wenn die Func zum Explodieren aufgerufen wird, macht er folgendes: 1. Bild laden (jedes mal... das kostet GraKaspeicher bis zum Erbrechen ->Auslagern) 2. Frame 1 der Animation malen 2a. mit Flip anzeigen 3. Frame 2 anzeigen... etc... Du siehst: dein Rechner führt stur deine Befehle aus- wo soll er denn was andres machen, du hälst ihn ja in der Schleife gefangen (und malst somit nur die explo, sonst nix). Abhilfe schafft eine Variable welche die Framenummer beinhaltet. Lass diese dann alle xxx millisecs() um eins erhöhen und zeichne deine Explo so ohne Schleife. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich programmiere gerade was ähnliches, da geht es auch um Objekte, die explodieren.
Dabei bin ich folgendermaßen vorgegangen: Ich habe eine Funktion, die eine neue Explosion erstellt und eine Funktion, die alle Explosionen aktualisiert. Die Funktion Explosion() erstellt eine neue Explosion. Sie wird aufgerufen, wenn das Objekt explodieren soll. Dabei erhält die Explosion die Koordinaten des alten Objektes. Code: [AUSKLAPPEN] Function Explosion(x,y) e.explosion = new explosion e\x = x e\y = y End Function Die Funktion UpdateExplosion() dient zum Zeichnen der Explosion und zum löschen der Explosion, wenn sie vorüber ist. Code: [AUSKLAPPEN] Function UpdateExplosion() for e.explosion = each explosion drawimage ExplosionGfx, e\x, e\y, e\frame e\frame = e\frame + 1 if e\frame = letztesbild+1 then delete e next end function In der Schleife sieht das etwa so aus: Code: [AUSKLAPPEN] Repeat cls WENN Objekt zerstört DANN Explosion(ObjektX, ObjektY) ; Neue Explosion erstellen Delete Objekt ; Altes Objekt löschen ENDIF UpdateExplosion() ; Alle Explosionen zeichnen, aktualisieren flip until keyhit(1) end |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Apprauuuu
Denkst du auch nach wenn du was programmierst ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group