Ein kleines Problem mit Animation

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

bruce185

Betreff: Ein kleines Problem mit Animation

BeitragMi, Mai 04, 2005 17:43
Antworten mit Zitat
Benutzer-Profile anzeigen
hi
ich hab da mal wieder ein problem, und zwar habe ich in mein Projekt ein Animationsbild eingefügt mit 6 bilder, und ich möchte wenn ich nach rechts bewege das dieser animation von 0 bis 5 durchläuft wenn ich den pfeil nach rechts bewege, der figur bewegt sich zwar aber ich weiss nicht so genau wie ich das machen kann das gleichzeitig die animation durchläuft, so sieht das inzwischen aus:

BlitzBasic: [AUSKLAPPEN]
Graphics 800,600,16,2
SetBuffer BackBuffer()

Global speed# = 2.7
Global rechts_bewegen = (205), links_bewegen = (203)

lade_figur = LoadAnimImage(\"figur.bmp\", 206, 339, 0, 6)
MaskImage lade_figur,255,0,255

Repeat
Cls

DrawImage lade_figur,x+10,y+10,3

If KeyDown(rechts_bewegen)
If x < 500 Then x = x + speed#
ElseIf KeyDown(links_bewegen)
If x > 0 Then x = x - speed#
EndIf

Flip
Until KeyDown(1)
End


soviel ich weiss muss ich doch ein Timer benutzen "CreateTimer" oder,
ich bin euch sehr dankbar wenn ihr mir helfen könnt, danke schonmal.

MFG Christian

Spikespine

BeitragMi, Mai 04, 2005 17:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Verwende eine Variable die sich nach einem (zeitlichen) Takt erhöht. Dann nimmst du als Frame-Parameter von Drawimage diese Variable.

Mit einem Timer kannst du bei diesem Problem nicht sehr viel anfangen...

Spike
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax

bruce185

BeitragMi, Mai 04, 2005 17:57
Antworten mit Zitat
Benutzer-Profile anzeigen
und wie soll das gehen , kannst du mir vieleicht ein tip geben Laughing

Spikespine

BeitragMi, Mai 04, 2005 18:12
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm...

BlitzBasic: [AUSKLAPPEN]
If MilliSecs() - Last > 200 Then ;Falls 0,2 sek vergangen sind
Frame = Frame + 1 ;Variable erhöhen
If Frame > 5 Then Frame = 0 ; Falls sie die Maximalanzahl überschritten hat, wird sie zurückgesetzt
Last = MilliSecs()
EndIf

DrawImage lade_figur,x,y,Frame


Sollte so in etwa klappen.

Spike
Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax

Ralf

BeitragMi, Mai 04, 2005 18:26
Antworten mit Zitat
Benutzer-Profile anzeigen
oder so:

Code: [AUSKLAPPEN]
Graphics 800,600,16,2
SetBuffer BackBuffer()

Global speed# = 2.7
Global rechts_bewegen = (205), links_bewegen = (203)
Global animspeed#=.2

lade_figur = LoadAnimImage("figur.bmp", 206, 339, 0, 6)
MaskImage lade_figur,255,0,255

Repeat
Cls


If Floor(frame#) > 5 Then frame#=0
DrawImage lade_figur,x+10,y+10,Floor(frame#)

If KeyDown(rechts_bewegen)
  If x < 500 Then x = x + speed# : frame#=frame#+animspeed#
ElseIf KeyDown(links_bewegen)
  If x > 0 Then x = x - speed#
EndIf

Flip
Until KeyDown(1)
End

bruce185

BeitragMi, Mai 04, 2005 20:57
Antworten mit Zitat
Benutzer-Profile anzeigen
cool, das hat funktioniert, ich danke dir für deine hilfe Very Happy

Christian

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group