DisplaySprite3D und OpenWindowScreen
Verfasst: 14.03.2006 10:47
Hallo Cracks...
Ich möchte gerne in einen WindowedScreen eine Analoguhr darstellen, deren Zeiger ich mittels 'RotateSprite' darstelle.
Wenn ich nun für ein Sprite den Befehl 'TransparentSpriteColor' benutze, wird das Sprite nicht im Screen angezeigt. Lasse ich den Befehl weg, funktioniert alles, nur das Sprite ist eben nicht "transparent" "!
Aber warum ist das so und wie setzte ich den Befehl richtig ein?
Mein Code sieht folgendermaßen aus:
p.s. Noch eine Frage... Kann man das deklarieren der Prozeduren irgendwie in jaPBe ausschalten ?!
Ich möchte gerne in einen WindowedScreen eine Analoguhr darstellen, deren Zeiger ich mittels 'RotateSprite' darstelle.
Wenn ich nun für ein Sprite den Befehl 'TransparentSpriteColor' benutze, wird das Sprite nicht im Screen angezeigt. Lasse ich den Befehl weg, funktioniert alles, nur das Sprite ist eben nicht "transparent" "!
Aber warum ist das so und wie setzte ich den Befehl richtig ein?
Mein Code sieht folgendermaßen aus:
Code: Alles auswählen
Declare DrawClock()
InitSprite()
InitSprite3D()
If OpenWindow(0,0,0,120,250,#PB_Window_ScreenCentered|#PB_Window_SystemMenu,"ZINA")
If OpenWindowedScreen(WindowID(),0,0,120,120,0,0,0)
;============================================
;Lasse ich diesen Befehl weg, wird das Sprite dargestellt.
TransparentSpriteColor(-1, 255, 255, 255)
;============================================
LoadSprite(1, "GFX\Uhr120x120.bmp", #PB_Sprite_Texture) ;Hintergrundgrafik der Uhr
LoadSprite(2, "GFX\Sek64x64.bmp" , #PB_Sprite_Texture) ;der Sekundenzeiger
LoadSprite(3, "GFX\Min64x64.bmp" , #PB_Sprite_Texture) ;der Minutenzeiger
LoadSprite(4, "GFX\Hrs64x64.bmp" , #PB_Sprite_Texture) ;der Stundenzeiger
CreateSprite3D(1, 2)
CreateSprite3D(2, 3)
CreateSprite3D(3, 4)
Sprite3DQuality(1)
EndIf
EndIf
StartTimer(0,1000,@DrawClock())
Repeat
EventID=WaitWindowEvent()
Until EventID=#PB_Event_CloseWindow
Procedure DrawClock()
;Errechnen der Zeigerwinkel
s=-90+Int(Second(Date())*6)
m=-90+Int(Minute(Date())*6);+(s*0.01)
h=-90+Int(Hour(Date())*30) ;+(m*0.08)
;Hintergrund zeichnen
ClearScreen(255,255,255)
DisplaySprite(1,0,0)
;Sekundenzeiger darstellen und rotieren
Start3D()
DisplaySprite3D(1,28,28): RotateSprite3D(1,s,0)
Stop3D()
FlipBuffers()
EndProcedure
; jaPBe Version=2.5.4.22
; Build=0
; FirstLine=0
; CursorPosition=8
; ExecutableFormat=Windows
; DontSaveDeclare
; EOF