Seite 1 von 1
Sprites langsam einblenden
Verfasst: 16.07.2025 09:38
von irobot
Guten Tag zusammen,
habe das noch nicht so richtig verstanden: wie muss ich das anstellen, wenn ich nach
OpenWindow(0, 0, 0, x, y, "Jump-and-Run Animation", #PB_Window_SystemMenu | #PB_Window_Invisible | #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, x, y, 0, 0, 0, #PB_Screen_WaitSynchronization)
all diese
DisplaySprite(1, 0, 0)
DisplaySprite(2, 0, 0)
DisplaySprite(3, 0, 0)
...
FlipBuffers()
nicht plötzlich erscheinen (das klappt schon ganz gut), sondern, nachdem alle Sprites auf dem noch nicht zu sehenden Window drauf sind, ich dieses LANGSAM einblenden will?
Da ich kein PureBasic-Profi bin, würde mir eine "verstehbare" Erklärung sehr helfen.
Besten Dank im voraus für eure Kommentare!
Grüsse
irobot
Re: Sprites langsam einblenden
Verfasst: 16.07.2025 15:48
von Axolotl
HI irobot,
zuerst mal, bitte verwende doch die "Code-Tags" und mit einem lauffähigen Code würde auch das helfen mehr Spaß machen.
Ich habe mal das Hilfe Beispiel von OpenWindowedScreen() dahingehend erweitert, dass das Sprite erst nach 2 s erscheint und durch Butten "Hide" auch wieder für 2 s verschwinden kann.
Alternativ wäre auch ein/mehrere Timer möglich.
Vielleicht hilft es dir ja.
Code: Alles auswählen
Global time.q, interval.q, bVisible
If InitSprite() = 0
MessageRequester("Error", "Can't open screen & sprite environment!", 0)
End
EndIf
If OpenWindow(0, 0, 0, 220, 160, "A screen in a window...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ButtonGadget(0, 170, 135, 45, 20, "Quit")
ButtonGadget(1, 170, 105, 45, 20, "Hide")
If OpenWindowedScreen(WindowID(0), 0, 0, 160, 160)
CreateSprite(0, 20, 20)
If StartDrawing(SpriteOutput(0))
Box(0, 0, 20, 20, RGB(255, 0, 155))
Box(5, 5, 10, 10, RGB(155, 0, 255))
StopDrawing()
EndIf
Else
MessageRequester("Error", "Can't open windowed screen!", 0)
End
EndIf
EndIf
interval = 2000 ; 2 s
time = ElapsedMilliseconds()
direction = 2
Repeat
; It's very important to process all the events remaining in the queue at each frame
;
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case 0
End
Case 1
bVisible = #False
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
Until Event = 0
FlipBuffers()
ClearScreen(RGB(0, 0, 0))
If ElapsedMilliseconds() - time > interval
bVisible = #True
time = ElapsedMilliseconds()
EndIf
If bVisible = #True
DisplaySprite(0, x, x)
EndIf
x + direction
If x > 140 : direction = -2 : EndIf
If x < 0 : direction = 2 : EndIf
Delay(1)
ForEver
Re: Sprites langsam einblenden
Verfasst: 16.07.2025 18:15
von H.Brill
irobot hat geschrieben: 16.07.2025 09:38
nicht plötzlich erscheinen (das klappt schon ganz gut), sondern, nachdem alle Sprites auf dem noch nicht zu sehenden Window drauf sind, ich dieses LANGSAM einblenden will?
Ich glaube, er sucht so eine Art Fading für seine Sprites. Vielleicht kann man etwas mit
und der Intesität ( 0 - 255) und einem Timer was anfangen. Die Intesität müßte dann in eine Variable
(Start mit 0) und bei einem Timerereignis dann bis 255 hochgezählt werden.
Da wäre dann etwas Rumprobieren bis zum gewünschten Ergebnis notwendig.
Re: Sprites langsam einblenden
Verfasst: 17.07.2025 11:21
von irobot
mittels
DisplayTransparentSprite(spritenummer, 0, 0, intensitaet)
krieg ich das hin!
Dank an euch allen!
BTW, das mit den "Code-Tags" hab ich nicht begriffen.
Was muss ich tun, damit gewisse Ausschnitte hier wie Code aussehen?
Grüsse
irobot
Re: Sprites langsam einblenden
Verfasst: 17.07.2025 11:40
von TroaX
BBCode. BBCode hat Code Tags, die den Code zumindest sauber formatiert in Beiträgen anzeigen können.
app.php/help/bbcode#f2r1
Re: Sprites langsam einblenden
Verfasst: 17.07.2025 12:49
von H.Brill
Schreib doch einfach eckige Klammer ([) auf und das Wort code dahinter und eckige Klammer (]) zu.
dann dein Code
Am Schluß das gleiche wie am Anfang, jedoch vor dem Wort code noch ein Slash (/) dazu.
Re: Sprites langsam einblenden
Verfasst: 17.07.2025 17:08
von NicTheQuick
Du kannst auch sehen wie es andere hier machen, indem du ihre Posts zitierst.