Animation aus einzelnenbildern!

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

lohgock

Betreff: Animation aus einzelnenbildern!

BeitragMi, Jun 22, 2005 21:46
Antworten mit Zitat
Benutzer-Profile anzeigen
HI,

ich hab da eine figur in 8 bildern.wie kann ich die animieren?
oder wennich alles in ein bild mach wie animier ich das dann?
 

f L i P

BeitragMi, Jun 22, 2005 21:49
Antworten mit Zitat
Benutzer-Profile anzeigen
falls es einzelbilder sind musst du mit hilfe einer schleife jedes bild in einem dim abspeichern und sie dann mit einer bedingung abrufen.
wenn du ein bild mit mehreren frames (bilder nebeneinander hast) must du statt loadimage, loadanimimage nehmen (siehe onlinehilfe). und die framenummer mit einer bedingung verändern...

MfG fLiP
mir egal wer dein Vater ist- solange ich hier am angeln bin wird nicht über's wasser gelaufen!
 

lohgock

BeitragMi, Jun 22, 2005 21:51
Antworten mit Zitat
Benutzer-Profile anzeigen
dA-fLiP hat Folgendes geschrieben:
falls es einzelbilder sind musst du mit hilfe einer schleife jedes bild in einem dim abspeichern und sie dann mit einer bedingung abrufen.
wenn du ein bild mit mehreren frames (bilder nebeneinander hast) must du statt loadimage, loadanimimage nehmen (siehe onlinehilfe). und die framenummer mit einer bedingung verändern...

MfG fLiP
ich habs bis jetzt so:
BlitzBasic: [AUSKLAPPEN]

bild = LoadAnimImage(\"orkwalknord.jpg\",96,96,0,7)
For i = 1 To 6
Cls
DrawImage bild,96,96,i
Delay 100
Next
nur brem,st es das aus und jeder schleifen durchgang dauert 600millisecs

Waveblue

BeitragMi, Jun 22, 2005 22:06
Antworten mit Zitat
Benutzer-Profile anzeigen
delay ist unsinn!
Ich empfehle dir
BlitzBasic: [AUSKLAPPEN]
WaitTimer



BlitzBasic: [AUSKLAPPEN]

timer=CreateTimer(60) ;<--60 Frames pro sekunde!
bild = LoadAnimImage(\"orkwalknord.jpg\",96,96,0,7)

Repeat
Cls
For i = 1 To 6
Cls
DrawImage bild,96,96,i
WaitTimer(timer)
Next
Until KeyHit(1) ;ausführen bis Esc gedrückt wird!
This is 10% luck
20% skill
15% concentrated power of will
5% pleasure, 50% pain
and 100% reason to remember the name

BladeRunner

Moderator

BeitragMi, Jun 22, 2005 22:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Da waittimer aber auch das programm ausbremst, würde ich eher die millisecs() -Lösung vorschlagen. die wurde sicher schon ein dutzend mal gepostet- suchen wird dir da helfen Wink
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

Spikespine

BeitragDo, Jun 23, 2005 13:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Die figur hat 8 einzelbilder? Dann bekommt LoadAnimImage als letzten Parameter die 8.

Den Frame Zähler musst du von 0 bis 7 laufen lassen.

@Waveblue... hm, dein Code funktioniert so, aber bedenke, wenn er noch andere Sachen in den Code packen will, wird er durch die For-Next schleife ausgebremst.
Lieber eine Variable verwenden, die sich immer bei Bedarf (z.B. if bewegung=1) erhöht.

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

Jack

BeitragDo, Jun 23, 2005 17:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, ich habe gerade auch so nen Thread, schau doch mal hier

https://www.blitzforum.de/viewtopic.php?t=12235

schau im Beginner-Forum unter "Problem mit Frames", frag mich oder benutz die Forensuche. Hier mein Code(mit Unterstützung von Apocalyptic,
Alfadur und BladeRunner Wink ):
Code: [AUSKLAPPEN]
Global frame
Global laufen = False
Global sframe = False

Function drawspieler()
 If KeyDown(203) Then
  laufen = True
  sframe = 5
 
 ElseIf KeyDown(205) Then
  laufen = True
  sframe = 1
 Else
  laufen = 0
 EndIf
 
 If laufen = True Then frame = (frame + 1) Mod 2
 
 DrawImage Figur, 100,200, sframe + frame
End Function

Graphics 640,480,16,2
SetBuffer BackBuffer()
ClsColor 0,0,255
Cls

Global Figur = LoadAnimImage("C:\Bilder\Dino.bmp",35,50,0,8)

MaskImage Figur, 255,255,255

Repeat
 Cls
 drawspieler
 If KeyDown(1) Then Exit
 Delay 150
 Flip
Forever
End

Naja, bei mir funktionierts. Du musst halt noch Breite und Hoehe und vielleicht noch ein paar Einzelkeiten abändern. Wink

BladeRunner

Moderator

BeitragDo, Jun 23, 2005 17:07
Antworten mit Zitat
Benutzer-Profile anzeigen
...und ich kann Dir nur raten diesen Code nicht zu verwenden. Zeitkritische Geschichten und Timer realisiert man am besten mit Millisecs().
Hier ist zum Beispiel ein brauchbares Beispiel:
https://www.blitzforum.de/viewtopic.php?t=11749
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

Alfadur

BeitragDo, Jun 23, 2005 17:50
Antworten mit Zitat
Benutzer-Profile anzeigen
yeah, dennerlein, was an dem code ist eigentlich noch von dir?
A Cray is the only computer that runs an endless loop in less than four hours.
 

lohgock

BeitragSa, Jun 25, 2005 22:11
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
Graphics 800,600
bild = LoadAnimImage(\"orkwalknord.jpg\",96,96,0,7)
anfang = MilliSecs()
Repeat
Cls


If MilliSecs() < anfang + 100 Then
i = i +1
If i = 7 Then
i = 0
EndIf
DrawImage bild,96,96,i
anfang = MilliSecs()
EndIf
Flip
Until KeyHit(1)
End

etwa so?
 

lohgock

BeitragSo, Jun 26, 2005 20:10
Antworten mit Zitat
Benutzer-Profile anzeigen
so bis jetzt funktioniert alles nur es flimmert noch
wenn ich ein cls in die schleife mach wirds so zeitenlupen mäßig

BladeRunner

Moderator

BeitragSo, Jun 26, 2005 22:19
Antworten mit Zitat
Benutzer-Profile anzeigen
dein Code ist an sich nicht verkehrt, nur zeichnest Du dein Bild nur alle hundert millisecs ein Wink
Mach das drawimage einfach ausserhalb des if-then, dann geht es Wink
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

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group