Sprite zieht Spur hinter sich...?? wie bekomme ich den weg?

Anfängerfragen zum Programmieren mit PureBasic.
Skyhawk
Beiträge: 24
Registriert: 04.04.2005 20:41
Wohnort: Düsseldorf

Sprite zieht Spur hinter sich...?? wie bekomme ich den weg?

Beitrag von Skyhawk »

Also ich habe in einem Fenster ein Bild und vor dem Bild soll sich ein SPrite bewegen.

Da ich jetzt erstmal nur zum Teste eine Bewegung haben möchte (Links-->Rechts)
ist mir aufegefallen das das Sprite eine "Spur" zieht.

Meine Vermutung, das Sprite wird gezeichnet und wieder gezeichnet...aber wie bekomme ich das weg?

Das Sprite ist in PNG und hat ALPHA, wenn ich es nur anzeigen lasse auf dem Bild ist es auch richtig.
Ist jetzt nur ein Ausszug aus dem Code (logisch).

Code: Alles auswählen

LoadSprite(1, "D:\LenaX2.png", #PB_Sprite_AlphaBlending | #PB_Sprite_Texture)

 x=0     
    
    ClipSprite(1,0,0,282,93)
    
    Repeat
      x=x+1
      DisplayTransparentSprite(1, x, 10)
  
    Until x=268
Benutzeravatar
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

Beitrag von ts-soft »

Skyhawk hat geschrieben:Ist jetzt nur ein Ausszug aus dem Code (logisch).
Nein, ist nicht logisch. Ein auf ein minimum reduzierter, lauffähiger Code darf hier von Dir
erwartet werden.

Bei Deinem Code fehlt zumindest das FlipBuffers()
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.
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Sprite zieht Spur hinter sich...?? wie bekomme ich den w

Beitrag von RSBasic »

Code: Alles auswählen

EnableExplicit

InitSprite()
InitKeyboard()

If OpenScreen(1024,768,32,"Screen")
 
  Repeat
    FlipBuffers()
    ClearScreen(RGB(0,0,0))
   
    ;...
   
    ExamineKeyboard()
   
    If KeyboardReleased(#PB_Key_Escape)
      End
    EndIf
   
  ForEver
EndIf
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Skyhawk
Beiträge: 24
Registriert: 04.04.2005 20:41
Wohnort: Düsseldorf

Re: Sprite zieht Spur hinter sich...?? wie bekomme ich den w

Beitrag von Skyhawk »

ts-soft hat geschrieben:
Skyhawk hat geschrieben:Ist jetzt nur ein Ausszug aus dem Code (logisch).
Nein, ist nicht logisch. Ein auf ein minimum reduzierter, lauffähiger Code darf hier von Dir
erwartet werden.

Bei Deinem Code fehlt zumindest das FlipBuffers()

sorry, mit Logisch meinte ich eigentlich da ich Objekte Lade und die ihr ja nicht habt, deswegen nur der auszug...aber gut du hast natürlich recht, zum besseren verständniss
wäre der ganze code besser. Da habe ich nicht drüber nachgedacht. Sorry.

Hier der ganze code:

Code: Alles auswählen

If InitSprite() = 0
    MessageRequester("Error", "Can't open screen & sprite enviroment!", 0)
    End
EndIf
    
  
If OpenWindow(0, 550, 550, 550, 550, "Lena X-perience Patcher", #PB_Window_SystemMenu |#PB_Window_MinimizeGadget| #PB_Window_ScreenCentered)
  
  If OpenWindowedScreen(WindowID(0), 0, 0, 550, 480, 0, 0, 0)
    
    UsePNGImageDecoder()
    
    LoadImage(0, "d:\PB-Test.bmp")
    LoadSprite(1, "D:\LenaX2.png", #PB_Sprite_AlphaBlending | #PB_Sprite_Texture)
    LoadSprite(2, "D:\LenaX2alpha.png", #PB_Sprite_AlphaBlending | #PB_Sprite_Texture)
    
    
    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")
    
    
    FlipBuffers()
    
    If StartDrawing(ScreenOutput())
      
     
      DrawingMode(#PB_2DDrawing_Default)
      DrawImage(ImageID(0), 0, 0, 550, 480)
      
      StopDrawing()
      
    EndIf
    
    Repeat
      Select WaitWindowEvent()
        Case #PB_Event_CloseWindow
          
          End
          
        Case #PB_Event_Gadget
          If EventGadget() = 0
            event = 1
          EndIf
          
          
      EndSelect
          
     
          If EventGadget() = 1
            event = 2
            MessageRequester("ups...Sorry", "i`m so sorry, but this Loader ist still in progress", 0)
          EndIf
          
    x=0     
    
    ClipSprite(1,0,0,282,93)
    
    Repeat
      
      x=x+1
      DisplayTransparentSprite(1, x, 10)
      DisplayAlphaSprite(2, x, 10)
      
      
    Until x=268
     
    Until event = 1
        
  EndIf
EndIf 
End
Wie man sieht habe ich mit "DisplayAlphaSprite" versucht so eine Transparenz bzw. löschung der spur zu versuchen..im nachhinein merke ich selber das der Gedanke total falsch ist. :lol:
Benutzeravatar
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

Beitrag von ts-soft »

Skyhawk hat geschrieben:

Code: Alles auswählen

    FlipBuffers()
    
    If StartDrawing(ScreenOutput())
      
     
      DrawingMode(#PB_2DDrawing_Default)
      DrawImage(ImageID(0), 0, 0, 550, 480)
      
      StopDrawing()
      
    EndIf

Dieser Teil gehört in die Schleife.
Es wird immer alles neugezeichnet! Dann sollte auch Deine Bremsspur weg sein.

Den bereits erwähnten Fehler in Deiner EventAbfrage hast Du auch noch nicht korrigiert.
Außerdem sollte das WaitWindowEvent(20) einen Timeout haben.
Zuletzt geändert von ts-soft am 03.09.2012 12:00, insgesamt 1-mal geändert.
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.
Bild
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Sprite zieht Spur hinter sich...?? wie bekomme ich den w

Beitrag von Kiffi »

<OT>
ts-soft hat geschrieben:Dann sollte auch Deine Bremsspur weg sein.
wenn das jetzt mal keine Steilvorlage für rolaf ist... :lol:

</OT>
a²+b²=mc²
Benutzeravatar
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

Beitrag von ts-soft »

PS: In der Signatur von Kiffi findest Du einen Link um Deine Bilder kostenlos hochzuladen:
PureBasic Projekthosting
Ansonsten gibt es noch die Möglichkeit, Bilder aus dem Examples-Ordner von PB zu nutzen.
Bilder als Datazeilen posten (div. Routinen über die Suchfunktion, z.B. Bin2Data von mir)
oder einfach selber malen (gefüllte Rechtecke oder Kreise sollten meist genügen)

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.
Bild
Skyhawk
Beiträge: 24
Registriert: 04.04.2005 20:41
Wohnort: Düsseldorf

Re: Sprite zieht Spur hinter sich...?? wie bekomme ich den w

Beitrag von Skyhawk »

hmm, ok, also mit deinem Hinweiß das der von dir markierte Bereich auch in die Schleife sollte, klappt es...nur sind jetzt die Buttons weg bis der "until X=268" Fall eingetreten ist...was ja logisch ist...erst dann macht er weiter mit dem Code.

Ich dachte eigentlich das man das Bild lassen kann und NUR das sprite neuzeichnen lässt...oder geht das so nicht?

(komme mir grad total blöde vor mit meinen Fragen) :lamer:
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Sprite zieht Spur hinter sich...?? wie bekomme ich den w

Beitrag von STARGÅTE »

Was heißt, "Bild lassen kann".
Das Bild ist "auf dem Bildschirm gezeichnet" und dein Sprite wird auch auf den Bildschirm gezeichnet.
Somit wurde "das Bild" schon verändert, und muss somit auch neu gezeichnet werden.
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
Skyhawk
Beiträge: 24
Registriert: 04.04.2005 20:41
Wohnort: Düsseldorf

Re: Sprite zieht Spur hinter sich...?? wie bekomme ich den w

Beitrag von Skyhawk »

ah ok....

hmm, gehe ich dann recht in der annahme das wen ich CREATESPRITE nutzen würde dies als eigene Ebene generiert wird und unabhängig vom Bildscreen ist?
Antworten