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

eXpl0it3r

Treue Seele

Beiträge: 386

Wohnort: Schweiz

Beruf: Professional Software Engineer

  • Private Nachricht senden

11

01.10.2012, 22:55

Ehrm Geheim du hast da immer noch etwas falsch verstanden. Wenn du eine Referenz auf eine Texture hast, dann musst du diese Ausserhalb von der Klasse am Leben erhalten, da er dies aber nicht wollte, sondern die Textur innerhalb des Objekts speichern will, bringt ihm das Ganze gar nichts. Und wenn du die Textur innerhalb der Klasse speicherst, dann ist es falsch eine Referenz zu verwenden... ;)

Also entweder etwas in die Richtung wie Geheim gesagt hat:

C-/C++-Quelltext

1
2
3
4
Object::Object(sf::Texture &texture)
{
    sprite.setTexture(texture);
}


Oder dann aber direkt:

C-/C++-Quelltext

1
2
3
4
Object::Object(sf::Texture tex) : texture(tex)
{
    sprite.setTexture(texture);
}


Oder aber vielleicht doch etwas besser, so dass die Texture nicht umher kopiert wird:

C-/C++-Quelltext

1
2
3
4
5
Object::Object(const std::string& str)
{
    texture.loadFromFile(str);
    sprite.setTexture(texture);
}
Blog: https://dev.my-gate.net/
—————————————————————————
SFML: https://www.sfml-dev.org/
Thor: http://www.bromeon.ch/libraries/thor/
SFGUI: https://github.com/TankOs/SFGUI/

Geheim

Treue Seele

Beiträge: 202

Wohnort: Salzburg

Beruf: Schüler

  • Private Nachricht senden

12

01.10.2012, 23:11

Er will das nicht? Oh, das hab ich wohl überlesen sry.
Aber 1 mal die Textur laden ist klüger als pro Objekt 1 mal ;)

Nexxtron

Alter Hase

Beiträge: 424

Wohnort: Heilbronn

Beruf: Student - Software Engineering

  • Private Nachricht senden

13

01.10.2012, 23:11

hatte auch schon das Problem, wenn du das Objekt so in die Liste speicherst musst du danach nochmal mit back() darauf zugreifen und die texture nochmal dem Sprite zuweisen, da beim speichern in die Liste ne Kopie erstellt wird und die Textur in der Kopie eine neue Adresse hat.
New Project: Operation CityRacer

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Nexxtron« (01.10.2012, 23:28)


14

02.10.2012, 09:12

Ich hab jetzt wie Vorgeschlagen einfach einen sehr kleinen Resource Manager geschrieben und dann die vom Resource Manager
geladenen Texturen über Referenz an die jeweiligen Objekte übergeben. Funktioniert jetzt alles wunderbar. :)

Danke euch allen! :)

Saik0

Treue Seele

Beiträge: 171

Beruf: Anwendungsentwickler

  • Private Nachricht senden

15

02.10.2012, 09:28

Für zukünftige Fragen bzw. falls ähnliche Probleme auftreten sollten, gibt es hier ein kleines Tutorial wie man einen Resourcen Manager mit SFML implementiert. Wer die SFML 2.0 verwendet muss den Resourcen Manager einfach mit sf::Texture anpassen ^^

Werbeanzeige