sprite darstellen mittels timer (pbosl)
Verfasst: 02.03.2007 11:15
hallo,
ich wollte mich mal darin versuchen, eine procedure zu schreiben, die mir ermöglicht, eine sprite einfach von a nach b zu bewegen, der aufruf sollte als timer passieren, leider gibt es da wohl ein problem ;-(
die procedure sprite_move(sprite,x,y) soll eigentlich nur einen timer erstellen und das sprite in den positionen setzen..aber irgendwie wenn ich sprite_move dann ständig aufrufe, wird es neu initialisiert, was natürlich quatsch ist, wie könnte man denn sowas hinbekommen?
wenn ich die bewegungsprocedure vor repeat setze, erscheint kein sprite, wie also umsetzen ?
muß doch eigentlich gehen oder ?
also einfach ein sprite init, timer create, und sprite bewegen lassen...
nur wie?
benutze übrigens pb4.02 und die pbosl lib...
gruß xverbatim
ich wollte mich mal darin versuchen, eine procedure zu schreiben, die mir ermöglicht, eine sprite einfach von a nach b zu bewegen, der aufruf sollte als timer passieren, leider gibt es da wohl ein problem ;-(
die procedure sprite_move(sprite,x,y) soll eigentlich nur einen timer erstellen und das sprite in den positionen setzen..aber irgendwie wenn ich sprite_move dann ständig aufrufe, wird es neu initialisiert, was natürlich quatsch ist, wie könnte man denn sowas hinbekommen?
wenn ich die bewegungsprocedure vor repeat setze, erscheint kein sprite, wie also umsetzen ?
muß doch eigentlich gehen oder ?
also einfach ein sprite init, timer create, und sprite bewegen lassen...
nur wie?
benutze übrigens pb4.02 und die pbosl lib...
gruß xverbatim
Code: Alles auswählen
Global xp.w
Global yp.w
Global sp.b
Procedure Screen() ; Bildschirm init
If InitSprite() = 0 Or InitKeyboard() = 0
MessageRequester("Error", "Can't open DirectX 7 or later", 0)
End
EndIf
OpenScreen(1024,768,32, "Sprite")
EndProcedure
Procedure Clear_Screen(); Bildschirm löschen
ClearScreen(RGB(0,0,0))
EndProcedure
; hier ist die procedure für die spritebewegung
Procedure my_spritemove()
Beep_(800,20)
DisplaySprite(sp.b, xp.w,yp.w)
xp.w=xp.w+1
EndProcedure
Procedure sprite_move(sprite,x,y)
StartTimer( 0, 50, @my_spritemove() )
Delay(5)
xp.w=x
yp.w=y
sp.b=sprite
EndProcedure
Screen()
LoadSprite(0, "c:\test.bmp", 0)
CopySprite(0,1,0)
Repeat
FlipBuffers()
Clear_Screen()
sprite_move(0,100,300)
ExamineKeyboard()
Until x > 500 Or KeyboardPushed(#PB_Key_Escape)
End