Verfasst: 21.01.2007 02:37
Muss leider auch nochmals auf die Animation zurückkomen!
Habe den Code nun verändert, das er Bilder zur Animation eines Sprite laden soll.
Nur leider scheine ich noch einen Fehler gemacht zu haben, es blinkt jeweils nur das letzte Bild dieser 4 Bilder auf, die anderen werden gar nicht dargestellt. SCheint so, als hätte ich was noch nicht ganz kapiert 
Habe den Code nun verändert, das er Bilder zur Animation eines Sprite laden soll.
Code: Alles auswählen
InitSprite()
InitKeyboard()
OpenWindow(0,0,0,640,480,"Background-Tiles-Demo", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(0),0,0,640,480,0,0,0)
#AnimFrames = 100 ; 16 versch. Anim-Frames
#AnimStart = 1 ; erstes Sprite der Animation
;{ der ganze kram hier in diesem kommentarblock
; dient nur zum erzeugen der sprites
; wenn die sprites geladen werden,
; entfällt dieser block komplett.
CreateSprite(0,160,160) ; hintergrund-tile
StartDrawing(SpriteOutput(0))
Box(0,0,160,160,$200810)
For n=0 To 79
Plot(2*n,Random(159),Random($FFFFFF))
Next
StopDrawing()
TransparentSpriteColor(-1,$FF00FF)
For Anim=0 To #AnimFrames-1
CreateSprite(#AnimStart+Anim,200,200)
StartDrawing(SpriteOutput(#AnimStart+Anim))
Box(0,0,80,80,$FF00FF)
LoadSprite(#AnimFrames+Anim, "gfx/img/player.bmp")
LoadSprite(#AnimFrames+Anim, "gfx/img/player1.bmp")
LoadSprite(#AnimFrames+Anim, "gfx/img/player2.bmp")
LoadSprite(#AnimFrames+Anim, "gfx/img/player3.bmp")
StopDrawing()
;}
BackX.f = 0
BackY.f = 0
MoveX.f = 0
MoveY.f = 0
Repeat
ExamineKeyboard()
event = WindowEvent()
ClearScreen(0)
If KeyboardPushed(#PB_Key_Right)
MoveX -0.2 : If MoveX < -4 : MoveX = -4 : EndIf
EndIf
If KeyboardPushed(#PB_Key_Left)
MoveX +0.2 : If MoveX > 4 : MoveX = 4 : EndIf
EndIf
If MoveX < 0 : MoveX +0.1 : EndIf
If MoveX > 0 : MoveX -0.1 : EndIf
If KeyboardPushed(#PB_Key_Down)
MoveY -0.2 : If MoveY < -3 : MoveY = -3 : EndIf
EndIf
If KeyboardPushed(#PB_Key_Up)
MoveY +0.2 : If MoveY > 5 : MoveY = 5 : EndIf
EndIf
If MoveY < 1 : MoveY +0.1 : EndIf
If MoveY > 1 : MoveY -0.1 : EndIf
BackX + MoveX
If BackX < 0 : BackX + 160 : EndIf
If BackX > 159 : BackX - 160 : EndIf
BackY + MoveY
If BackY < 0 : BackY + 160 : EndIf
If BackY > 159 : BackY - 160 : EndIf
For t=0 To 3 ; 480/160 = 3 , einer mehr = 4
For n=0 To 4 ; 640/160 = 4 , einer mehr = 5
DisplaySprite(0, 160*n -160 + BackX, 160*t -160 + BackY)
Next
Next
Anim+1: If Anim>#AnimFrames-1 : Anim = 0 : EndIf
DisplayTransparentSprite(#AnimStart+Anim,280,360)
FlipBuffers()
Until event = #PB_Event_CloseWindow
