Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

23.10.2010, 22:13

Ja, das ist schon besser so - allerdings hat NachoMan genau beschrieben, wieso es nicht funktioniert. Du erstellst ein Image im Konstruktor, lädst das Bild und danach löschst Du das Bild quasi wieder (raus aus dem Gültigkeitsbereich). Du musst das Bild (sf::Image) permanent speichern, z.B. als Member der Klasse. (Dennoch solltest Du dir natürlich angewöhnen, die Error_Codes zu nutzen).

BLU3 L30PARD

Treue Seele

  • »BLU3 L30PARD« ist der Autor dieses Themas

Beiträge: 336

Wohnort: Hoch oben im Norden Schleswig Holsteins

Beruf: Schüler

  • Private Nachricht senden

12

23.10.2010, 22:19

Achsoooo.

einfach so machen:

C-/C++-Quelltext

1
2
private:
    sf::Image _gegner;


danke nochmal für den hinweis :)

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

13

23.10.2010, 22:24

das laden des bildes dauert sehr lang und das bild ist sehr groß(im speicher). wenn du das so machst und einen gegner zerstörst wird das bild neu geladen. willst du mehr gegner spawnen verschwendest du speicher. ein image kann nicht ohne grund von unendlich vielen sprites benutzt werden.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

BLU3 L30PARD

Treue Seele

  • »BLU3 L30PARD« ist der Autor dieses Themas

Beiträge: 336

Wohnort: Hoch oben im Norden Schleswig Holsteins

Beruf: Schüler

  • Private Nachricht senden

14

23.10.2010, 22:29

wie kann ich das denn anders machen?

15

23.10.2010, 23:06

Einfach das sf::Image nicht in die Gegner-Klasse sondern außerhalb und die Gegner-Klasse mit einem Zeiger darauf initialisieren.

Gruß
SaRu_

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

16

24.10.2010, 09:23

Du kannst auch statt der membervariable, ein objekt mit "new" auf dem heap anlegen, das bleibt dann auch über scope-grenzen hin bestehen, und wird nicht automatisch gelöscht. Ist aber natürlich auch nicht gut.

http://www.sfml-dev.org/wiki/en/sources/resource_manager

Schau dir mal die Klassen da an, sind eigentlich sehr einfach zu verstehen. Du machst dann einfach immer gImageManager->getResource("bild.bmp"); Der ResourceManager lädt dann nur beim ersten mal das bild, speichert einen zeiger und gibt dir immer den gleichen zeiger zurück, wenn du die methode dann erneut aufrufst. Sehr resourcenschonend :)

Werbeanzeige