ich habe mir 'mal das Beispiel zu Sprites aus der PB-Hilfe heruntergeladen und es ganz simpel (?) um die JPEG-Decoder erweitert:
Code: Alles auswählen
UseJPEG2000ImageDecoder()
UseJPEGImageDecoder()
UseTGAImageDecoder()
UsePNGImageDecoder()
UseTIFFImageDecoder()
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
MessageRequester("Error", "Can't open the sprite system", 0)
End
EndIf
If OpenWindow(0, 0, 0, 1000, 800, "Gadget and sprites!", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
ButtonGadget(1, 10, 10, 100, 25, "Grab input")
ButtonGadget(2, 120, 10, 100, 25, "Button 2")
ButtonGadget(3, 230, 10, 100, 25, "Button 3")
TextGadget (4, 10, 40, 300, 30, "Press 'F1' to ungrab keyboard and mouse")
MessageRequester("Datei",GetPathPart(ProgramFilename())+"/Data/Actors/File_020.JPEG")
If OpenWindowedScreen(WindowID(0), 40, 80, 600, 700, 0, 0, 0)
If LoadSprite(0, GetPathPart(ProgramFilename())+"/Data/Actors/File_020.JPEG")
;ZoomSprite(0,70,70)
EndIf
Else
MessageRequester("Error", "Can't open windowed screen!", 0)
End
EndIf
EndIf
direction = 1
playerX = 1
playerY = 1
Repeat
Repeat
; Always process all the events to flush the queue at every frame
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
Quit = 1
Case #PB_Event_Gadget
; Do the normal application management here
Gadget = EventGadget()
Select Gadget
Case 1
InputReleased = 0
ReleaseMouse(#False)
SetGadgetText(4, "Press 'F1' to ungrab keyboard and mouse")
Case 2, 3
SetGadgetText(4, "Button "+Str(Gadget)+" pressed.")
EndSelect
EndSelect
Until Event = 0 ; Quit the event loop only when no more events are available
If InputReleased = 0
ExamineMouse()
; do the sprite & screen management at every frame
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Up) And playerY > 0 : playerY -3 : EndIf
If KeyboardPushed(#PB_Key_Down) And playerY < 280 : playerY +3 : EndIf
If KeyboardPushed(#PB_Key_Left) And playerX > 0 : playerX -3 : EndIf
If KeyboardPushed(#PB_Key_Right) And playerX < 300 : playerX +3 : EndIf
If KeyboardPushed(#PB_Key_F1)
ReleaseMouse(#True)
InputReleased = 1
EndIf
EndIf
; Clear the screen and draw our sprites
;ClearScreen(RGB(0,0,0))
ClearScreen(RGB(50,50,50))
ClipSprite(0, 0, 0, x, x/8)
DisplaySprite(0, x, 100)
DisplaySprite(0, x, x)
DisplaySprite(0, 300-x, x)
DisplaySprite(0, playerX, playerY)
x + direction
If x > 800 : direction = -1 : EndIf ; moving back to the left with negative value
If x < 0 : direction = 1 : EndIf ; moving to the right with positive value
FlipBuffers() ; Inverse the buffers (the back become the front (visible)... and we can do the rendering on the back
Until Quit Or KeyboardPushed(#PB_Key_Escape)
Woran liegt das?