Sprite zieht Spur hinter sich...?? wie bekomme ich den weg?
Re: Sprite zieht Spur hinter sich...?? wie bekomme ich den w
Ja wäre sie, aber wenn du dieses "zwischen" Sprite dann auch wieder darstellen willst (auf dem Bildschirm), musst du trotzdem immer wieder alles neu Zeichnen musst!
Edit: Für Drago^^
Edit: Für Drago^^
Zuletzt geändert von STARGÅTE am 03.09.2012 16:37, insgesamt 1-mal geändert.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
-
- Beiträge: 148
- Registriert: 02.02.2010 18:22
- Computerausstattung: Win XP SP3, AMD Sempron (MMX) 1.2 GHz, 512 MB, Nvidia GeForce FX 5200, 128 MB, DirectX 9.0c
- Wohnort: Westerwald
Re: Sprite zieht Spur hinter sich...?? wie bekomme ich den w
Offtopic:
Ups, Stargate spricht Starwarsisch...
Ups, Stargate spricht Starwarsisch...
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Sprite zieht Spur hinter sich...?? wie bekomme ich den w
<OT>Hov lengvaD chenmoHlu' tlhIngan Hol'e' 'ej DaH 'oH ghojtaH ghot law'. Qapbej Holvam wIcha'meH, qawHaqvam chenmoHlu'. taHjaj wo', taHjaj Hol!</OT>
manch einer kann auch klingonisch
manch einer kann auch klingonisch

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Sprite zieht Spur hinter sich...?? wie bekomme ich den w
Hmm. *am Kopf Kratz*STARGÅTE hat geschrieben:Ja wäre sie, aber wenn du dieses "zwischen" Sprite dann auch wieder darstellen willst (auf dem Bildschirm), musst du trotzdem immer wieder alles neu Zeichnen musst!
Edit: Für Drago^^
ich denke jetzt mal (leihenhaft) das bei einem 2D -Shoot Em up z.B. doch vieles in Layern abläft, Layer=0 Hintergrund, Layer=1 Sprites, Layer=2 Vordergrund.
also wenn ich jetzt das Sprite zeichnen möchte in einer bewegung MUSS ich das Drawimage immer dazu nehmen im repeat, wie ihr mir ja schon erklärt habt.
Jetzt stelle ich mir diese vorgehensweise im Spiel z.B. recht langsam vor da ja alles neu gezeichnet werden müsste. Ja ich weiß, ich kann noch kein Spiel proggramieren

war jetzt nur als Beispiel genannt.
wenn ich aber dies so mache wie schon erwähnt (danke übrigens an alle die mir helfen)
verstehe ich nicht wieso meine Buttons nicht angezeigt werden, sondern erst nach ablauf der Spriteverschiebung, oder müssten die dann auch in eine REPEAT schleife mit einegbunden werden?
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Sprite zieht Spur hinter sich...?? wie bekomme ich den w
Du hast 2 schleifen, deswegen werden die Buttons nicht erneut gezeichnet, weil die WindowEvents nicht bearbeitet werden.
Dieser Code soll Dein Problem nur verdeutlichen, ungetestet, hab wirklich keine Lust Bilder rauszusuchen usw.
Ich hoffe mal, jetzt kommst Du weiter.
Code: Alles auswählen
Repeat
Select WaitWindowEvent(10)
Case #PB_Event_CloseWindow
End
Case #PB_Event_Gadget
If EventGadget() = 0
event = 1
EndIf
ElseIf EventGadget() = 1
event = 2
MessageRequester("ups...Sorry", "i`m so sorry, but this Loader ist still in progress", 0)
EndIf
EndSelect
FlipBuffers()
If StartDrawing(ScreenOutput())
DrawingMode(#PB_2DDrawing_Default)
DrawImage(ImageID(0), 0, 0, 550, 480)
StopDrawing()
EndIf
x=0
ClipSprite(1,0,0,282,93)
x=x+1
DisplayTransparentSprite(1, x, 10)
DisplayAlphaSprite(2, x, 10)
Until x=268 Or event = 1
Ich hoffe mal, jetzt kommst Du weiter.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 148
- Registriert: 02.02.2010 18:22
- Computerausstattung: Win XP SP3, AMD Sempron (MMX) 1.2 GHz, 512 MB, Nvidia GeForce FX 5200, 128 MB, DirectX 9.0c
- Wohnort: Westerwald
Re: Sprite zieht Spur hinter sich...?? wie bekomme ich den w
Ich hoffe, dieses hilft dir es zu verstehen. Du solltest dir die Beispiele von PureBasic mal anschauen.
Code: Alles auswählen
EnableExplicit ; Daran solltest du dich direkt gewöhnen, dieses immer an den Anfang schreiben
If InitSprite() = 0
MessageRequester("Error", "Can't open screen & sprite enviroment!", 0)
End
EndIf
UsePNGImageDecoder()
; Wenn du EnableExplicit eingeschaltet hast, MUSST du ALLE Variablen vorher
; durch Define / Global u.s.w. declarieren, sehr sinnvoll
Define event.i, x.i, quit.b, Gadget.i
Define Pfad$ = #PB_Compiler_Home + "Examples\Sources\Data\"
If OpenWindow(0, 550, 550, 550, 550, "Lena X-perience Patcher", #PB_Window_SystemMenu |#PB_Window_MinimizeGadget| #PB_Window_ScreenCentered)
ButtonGadget(0, 460, 500, 80, 40, "EXIT")
GadgetToolTip(0, "schade das du uns verlassen möchtest")
ButtonGadget(1, 10, 500, 80, 40, "PLAY")
GadgetToolTip(1, "Tauche ein in die Fantastische Welt")
If OpenWindowedScreen(WindowID(0), 0, 0, 550, 480, 0, 0, 0)
LoadImage(0, Pfad$ + "Background.bmp" )
LoadSprite(1, Pfad$ + "world.png", #PB_Sprite_AlphaBlending | #PB_Sprite_Texture)
LoadSprite(2, Pfad$ + "world.png", #PB_Sprite_AlphaBlending | #PB_Sprite_Texture)
Repeat
;------------------------------------------------------------------------------------------------------------------------------------------------------------------------
; Ab hier werden nur die Events abgearbeitet
;------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Repeat
event = WindowEvent()
Select event
Case #PB_Event_CloseWindow
quit = #True
Case #PB_Event_Gadget
Gadget = EventGadget()
If EventGadget() = 1
MessageRequester("ups...Sorry", "i`m so sorry, but this Loader ist still in progress", 0)
EndIf
EndSelect
Until event = 0
;------------------------------------------------------------------------------------------------------------------------------------------------------------------------
; Und hier geht es weiter, wenn kein Event eingetreten ist
; Jetzt mußt du ALLES neu zeichnen
;------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ClearScreen(RGB(0,0,0)) ; den Bildschirm löschen
If StartDrawing(ScreenOutput())
DrawingMode(#PB_2DDrawing_Default)
DrawImage(ImageID(0), 0, 0, 550, 480)
StopDrawing()
EndIf
x = x + 1
DisplayTransparentSprite(1, x, 50)
DisplayAlphaSprite(2, x, 10)
Delay( 0 ) ; auch daran solltest du dich gewöhnen, schont die CPU
; der Flipper gehört an das Ende der Zeichenoperationen
; Die Begründung liegt darin, wenn ich ein Objekt an x = 100 starten will
; würde ( wie bei dir es der Fall war ) das Objekt dann bei 101 starten,
FlipBuffers()
If x=268: x = 0: EndIf
Until quit
EndIf
EndIf
End
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Sprite zieht Spur hinter sich...?? wie bekomme ich den w
Delay(0) hat nur unter Windows eine Wirkung!Drago hat geschrieben:Code: Alles auswählen
Delay( 0 ) ; auch daran solltest du dich gewöhnen, schont die CPU
WaitWindowEvent(10) ist aber eigentlich die besser Wahl um die CPU zu schonen!
Werte zwischen 1 und 20 ergeben aufgrund des Ungenauigkeit der Zeitauflösung keinen Unterschied.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Sprite zieht Spur hinter sich...?? wie bekomme ich den w
@Drago
Herzlichen dank für deine Mühe die du da reingesteckt hast (und die Anderen natürlich auch)
Ich werde morgen dein Code mal zu gemüte führen und versuchen deine Vorschläge zu begreifen und nachzuvollziehen.
Ich weiß das ich noch viele Fehler mache und ihr andere Lösungswege habt.
Ich versuche gerade PB zu lernen (von NULL) in dem ich mir die HBs durchlese und gleichzeitig was versuche zu proggen,
daher habe ich noch viele Befehle noch nicht kennegelernt die ihr schon aus dem Eff-Eff kennt
Das mit dem DEFINE, EXPLICIT, DELAY und den TIMEOUTs werde ich versuchen zu nutzen
@TS-soft
Das mit dem Timeout verstehe ich ehrlich gesagt noch nicht so ganz.
Also delay habe ich benutzt als ich mit der Console rumexperimentiert habe, jetzt sagst du das dies aber nur unter windows verwendung hat und nur
Timouts "waitwindowevent(xx)" verwenden sollte...(Screen)...
Hat es ansonsten an sich den selben effekt?
Auch wen ich denke das ich in euren Augen als großen depp vorkomme, danke ich euch für eure schnelle Hilfe und tipps.

Ich werde morgen dein Code mal zu gemüte führen und versuchen deine Vorschläge zu begreifen und nachzuvollziehen.

Ich weiß das ich noch viele Fehler mache und ihr andere Lösungswege habt.
Ich versuche gerade PB zu lernen (von NULL) in dem ich mir die HBs durchlese und gleichzeitig was versuche zu proggen,
daher habe ich noch viele Befehle noch nicht kennegelernt die ihr schon aus dem Eff-Eff kennt

Das mit dem DEFINE, EXPLICIT, DELAY und den TIMEOUTs werde ich versuchen zu nutzen

@TS-soft
Das mit dem Timeout verstehe ich ehrlich gesagt noch nicht so ganz.
Also delay habe ich benutzt als ich mit der Console rumexperimentiert habe, jetzt sagst du das dies aber nur unter windows verwendung hat und nur
Timouts "waitwindowevent(xx)" verwenden sollte...(Screen)...
Hat es ansonsten an sich den selben effekt?
Auch wen ich denke das ich in euren Augen als großen depp vorkomme, danke ich euch für eure schnelle Hilfe und tipps.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Sprite zieht Spur hinter sich...?? wie bekomme ich den w
Das hast Du jetzt missverstanden. Delay(0) hat unter windows, also nicht unter linux oder macos, eine besondere Bedeutung und funktioniert deshalb auch nur unter windows mit dem Wert 0 wie gewünscht!
Delay() sollte man in Programmen mit einer GUI (Window) grundsätzlich meiden.
Stattdessen ist es besser z.B: WaitWindowEvent(10) zu nutzen.
Delay mit einem Wert <> 0 entlasted die CPU nicht sondern führt eher zum verschlucken
von Ereignissen. In Spielen spielt das ganze keine so grosse Rolle, aber man sollte es sich
gleich angewöhnen, das Delay nur eine Notlösung ist.
Gruß
Thomas
Delay() sollte man in Programmen mit einer GUI (Window) grundsätzlich meiden.
Stattdessen ist es besser z.B: WaitWindowEvent(10) zu nutzen.
Delay mit einem Wert <> 0 entlasted die CPU nicht sondern führt eher zum verschlucken
von Ereignissen. In Spielen spielt das ganze keine so grosse Rolle, aber man sollte es sich
gleich angewöhnen, das Delay nur eine Notlösung ist.
Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- HeX0R
- Beiträge: 3040
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Re: Sprite zieht Spur hinter sich...?? wie bekomme ich den w
Verschlucken sollte es eigentlich keine Events (oder passiert das etwa unter Li-Nix/Apfelmus?), nur eben immer weiter in die Queue schieben.
Allerdings war da ja noch der ewig nervige Fenster-Verschiebe/Event-Verschwinde-Effekt,
den ich vermutlich in meiner noch verbleibenden Lebenszeit nicht verschwinden sehen werde...
Allerdings war da ja noch der ewig nervige Fenster-Verschiebe/Event-Verschwinde-Effekt,
den ich vermutlich in meiner noch verbleibenden Lebenszeit nicht verschwinden sehen werde...
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}