Aktuelle Zeit: 09.07.2020 09:55

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 23 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags: Re: Sprite laden funktioniert nicht
BeitragVerfasst: 10.04.2020 23:17 
Offline

Registriert: 10.04.2020 12:19
Mittlerweile habe ich jetzt dank des wirklich ganz hervorragenden Handbuchs erstmals richtig verstanden, wie das geht mit den Buffers und was Clearscreen() und FlipBuffers() genau machen. Tatsächlich konnte ich jetzt sowohl jpg- als auch png-Sprites laden, wobei aber nur das jpg-Sprite korrekt angezeigt wurde, während das png-Sprite eine schwarze Fläche blieb. Hier jetzt der verbesserte Code:

Code:
#Flags = #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget

If InitSprite() = 0
  MessageRequester("InitSprite fehlgeschlagen", "Programm endet")
EndIf 

If OpenWindow(1,0,0,1366,700,"",#Flags) = 0
  MessageRequester("OpenWindow fehlgeschlagen", "Programm endet")
EndIf 

If OpenWindowedScreen(WindowID(1),0,0,1366,700) = 0
  MessageRequester("OpenWindowedScreen fehlgeschlagen", "Programm endet")
EndIf


  Repeat
     Event = WindowEvent()
     
     ClearScreen(RGB(0,0,0))
     
     StartDrawing(ScreenOutput())
     Box(0,0,1366,700,RGB(0,200,0)) ; grüner Hintergrund
     StopDrawing()
     
     UsePNGImageDecoder()
     LoadSprite(1, "C:\Users\lenovo\Desktop\Vsl.png")
     DisplaySprite(1,0,0)
     
     FlipBuffers()
   Until Event = #PB_Event_CloseWindow
End


Der grüne Hintergrund dient zur Sichtbarmachung der unvollständigen png-Sprite-Darstellung. Wenn das png-Sprite nun auch noch richtig zum Laufen gebracht werden könnte, wäre das natürlich super. Danke.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Sprite laden funktioniert nicht
BeitragVerfasst: 10.04.2020 23:56 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
Du hast es leider immernoch nicht so wirklich verstanden:
LoadSprite hat in der Schleife so überhaupt nix zu suchen!
Du ladest ein Sprite beim Initialisieren Deines Programms, und nicht bei jedem Schleifendurchlauf!

Genauso bei UsePNGImageDecoder()!
Das pappt man an den Kopf des ganzen Programms!
Es soll dem Compiler mehr oder weniger nur sagen, dass er die PNG Unterstützung mit einbinden soll, es ist völliger Quatsch, das immer und immer wieder innerhalb der Schleife aufzurufen (gut, PB ist so clever das eh nicht zu machen, es ist trotzdem einfach nur Blödsinn).

EIN simples WindowEvent() ist auch Quatsch!
So ein Fenster produziert unzählige Events, und wenn Du bei jedem Schleifendurchlauf immer nur eins aus der Eventqueue zupfst, führt das früher oder später zu Problemen.

JPG nimmt man üblicherweise nicht für Sprites!

Vielleicht solltest Du Dir noch so Sachen wie "DisplayTransparentSprite()" und "TransparentSpriteColor()" in der Hilfe anschauen.

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Sprite laden funktioniert nicht
BeitragVerfasst: 11.04.2020 00:31 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
Code fürs Timing nicht vergessen.

_________________

Links:
PureBasic Discord
[INCLUDE] GLFW 3.3 Library
[MODULE] Bass Library 2.4 (Win)
[LIBRARY] Hexi Binary2Hex (Win)



Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Sprite laden funktioniert nicht
BeitragVerfasst: 11.04.2020 00:48 
Offline

Registriert: 10.04.2020 12:19
Zitat:
LoadSprite hat in der Schleife so überhaupt nix zu suchen!


Genau so war das auch in meinem Spiel, was ich 2006 mal programmiert hatte, die LoadSprite() Befehle waren alle vor der Repeat-Schleife, aber ich hatte dann jetzt eben einen kleinen Ausschnitt im Handbuch gedanklich falsch aufgefaßt.

WindowEvent() war jetzt rein experimentell und war mir im übrigen auch genau hier in diesem Thread so empfohlen worden. Daß normalerweise WaitWindowEvent() genommen wird, weiß ich.

OK, jpg-Sprite funktioniert jetzt und das reicht mir auch erstmal. Png-Sprite kann später mal dazu kommen und bestimmt gibt es hier im Forum auch lesenswerte Threads und Code-Beispiele dazu.

Danke nochmals an alle.


Zuletzt geändert von Re57 am 11.04.2020 01:08, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Sprite laden funktioniert nicht
BeitragVerfasst: 11.04.2020 01:07 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
Re57 hat geschrieben:
WindowEvent() war jetzt rein experimentell und war mir im übrigen auch genau so hier in diesem Thread empfohlen worden.

Nein, sicherlich nicht!
Ich bin hier jetzt raus.
Meine Antennen melden merkwürdige Schwingungen, muss nicht stimmen, aber es gibt ja auch noch andere hilfsbereite User hier.

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Sprite laden funktioniert nicht
BeitragVerfasst: 11.04.2020 01:10 
Offline

Registriert: 10.04.2020 12:19
Beitrag gelöscht.


Zuletzt geändert von Re57 am 11.04.2020 07:42, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Sprite laden funktioniert nicht
BeitragVerfasst: 11.04.2020 07:34 
Offline

Registriert: 10.04.2020 12:19
Zitat:
WaitWindowEvent() würde ich nicht benutzen, sondern WindowEvent() - du musst ja im prinzip 60bilder pro sekunde Zeichnen und das geht nicht mit WaitWindowEvent()


@Hexor
War mir genau so hier empfohlen worden, damit du Bescheid weißt. Mein Anliegen mit dem png-Sprite hat sich erledigt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Sprite laden funktioniert nicht
BeitragVerfasst: 11.04.2020 08:06 
Offline
Benutzeravatar

Registriert: 20.04.2006 09:50
Hier hast du eine korrekte Eventbearbeitung:
https://www.purebasic.com/documentation/Examples/WindowedScreen.pb.html

_________________
my pb stuff..
Bild..jedenfalls war das mal so.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Sprite laden funktioniert nicht
BeitragVerfasst: 11.04.2020 11:20 
Offline

Registriert: 10.04.2020 12:19
Danke, ich habe mir den Code mal angesehen und weiß nun wieder, wie die Einbindung des Keyboards geht. Das konnte ich jetzt auch in meinem eigenen Test-Code realisieren. Aber einen Gewinn in Sachen png-Sprite-Darstellung konnte ich aus dem Muster-Beispiel nicht ziehen, im Gegenteil: Gibt es eine Möglichkeit, ein Programm so starten zu können, daß man von Anfang an jeden Arbeitsschritt Stück für Stück verfolgen kann? Ich habe nirgendwo finden können, wie das geht, weiß aber, daß ich früher in der PureBasic Version 4.00 Einzelschritt-Verfolgung gemacht hatte. Danke.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Sprite laden funktioniert nicht
BeitragVerfasst: 11.04.2020 12:04 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
F9 (Haltepunkt)

_________________
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf My Webspace


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 23 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye