Tach, habe schon das forum durchstöbert, aber nichts für mich brauchbares gefunden.
Bitte nicht erwürgen, wenn ich etwas übersehen habe. Ich kann mir auch gut vorstellen, dass diese Frage schon häufiger gestellt wurde.
Ich möchte gerne eine Explosion mit Sprites erzeugen.
Ich dachte mir, ich mache das durch eine schleife, klappt aber irgendwie nicht so...
Wie würdet ihr das machen? bzw warum funzt es nicht?... danke!
LOADSPRITE "1.bmp", 10
LOADSPRITE "2.bmp", 11
LOADSPRITE "3.bmp", 12
LOADSPRITE "4.bmp", 13
LOADSPRITE "5.bmp", 14
LOADSPRITE "6.bmp", 15
LOADSPRITE "7.bmp", 16
bomb_x = 250
bomb_y = 250
FOR E = 9 TO 16
exp_x = bomb_x
exp_y = bomb_y
SPRITE E + 1, exp_x, exp_y
exp_x = 1000
exp_y = 1000
NEXT
SHOWSCREEN
MOUSEWAIT
END
Du must die Zeit da rein bringen:
Nach jedem Sprite Befehl muß dieser mit Showscreen angezeigt werden.
Bei deinem Beispiel siehst du nur das letzte Bild.
z.B
t = GETTIMERALL()
WHILE
IF GETTIMERALL()-t >= 500 // alle 1/2 Sekunden = 500 Millisek.
INC E, 1
t=GETTIMERALL()
ENDIF
SPRITE E , ....
SHOWSCREEN
WEND
[edit: GernotFrisch]
Das SPRITE ausserhalb der IF/ENDIF, sonst flackerts.
Da hatter recht der Gernot :D
Und ausserdem schicker ist es so , im Gernot-Style:
IF Timer < GETTIMERALL()
INC E, 1
Timer = GETTIMERALL() + 500 // alle 1/2 Sekunden = 500 Millisek.
ENDIF
SPRITE E, ....
...sollte keine Kritik sein. Ich bin ja so froh, dass ihr euch jetzt selbst schon so viel helft!
Japp, soviel hast du hier net mehr zu Helfen... :D
Ausser bei so richtig Bombastischen Sachen, was ja selten vorkommt ;)
hmm... habs probiert... geht aber irgendwie nicht..
LOADSPRITE "1.bmp", 1
LOADSPRITE "2.bmp", 2
LOADSPRITE "3.bmp", 3
LOADSPRITE "4.bmp", 4
LOADSPRITE "5.bmp", 5
LOADSPRITE "6.bmp", 6
IF Timer < GETTIMERALL()
INC E, 1
Timer = GETTIMERALL() + 500 // alle 1/2 Sekunden = 500 Millisek.
ENDIF
SPRITE E, 100, 100
SHOWSCREEN
MOUSEWAIT
END
is was falsch?
bei diesem Coding wird er dir nur die erste Grafik anzeigen, nehme ich an. Verpacke das Ganze in eine WHILE-WEND-Schleife
z.b. so
LOADSPRITE "1.bmp", 1
LOADSPRITE "2.bmp", 2
LOADSPRITE "3.bmp", 3
LOADSPRITE "4.bmp", 4
LOADSPRITE "5.bmp", 5
LOADSPRITE "6.bmp", 6
WHILE TRUE // solange bis ESC gedrückt wird
IF Timer < GETTIMERALL()
INC E, 1
IF E > 6 THEN E = 0 // sind wir bei der letzen Grafik angekommen, dann wieder von vorne anfangen
Timer = GETTIMERALL() + 500 // alle 1/2 Sekunden = 500 Millisek.
ENDIF
SPRITE E, 100, 100
WEND
SHOWSCREEN
MOUSEWAIT
END
Hi
Jo alles in 'ne Schleife damit die Animation immer wieder durchlaufen wird
So wie es Quentin schon erklärt hat. Ja, und diese Zeile ist natürlich auch wichtig
IF E > 6 THEN E = 1
damit alles wieder von vorne anfängt. Aber eben dann E=1 nicht E=0 weil es gibt bei dir ja kein Sprite mit
der Nr.0 :D
Ach und SHOWSCREEN dann in die Schleife sonst siehst du nix :D
Cheers
ähem ja hast recht BumbleBee :)
super... danke... gab anfänglich Probleme, aber jetzt klappts.
In der While True schleife fehlte noch ein SHOWSCREEN.
Will jetzt aber auch gar nicht meckern.. nochmals vielen dank!
ups, hast recht, sorry, hatte grad kein GLBasic zur Hand ;)