SFML Sprite lade Funktion...
-
Hallo,
Ich habe neulich versuch eine Lade Funktion für Sprites zu erstellen
damit ich alles auf einen anhieb für die Sprites einstellen kann.
So siehts aus (funktioniert natürlich aber nicht),public: void Load(char* pImageName, char* pSpriteName, const string sFileName); private: //hier ist noch nix
... void CSprite::Load(char* pImageName, char* pSpriteName, const string sFileName) { sf::Image pImageName; if(!pImageName.LoadFromFile(sFileName.c_str())) { cout <<"Fehler beim laden von"<<sFileName.c_str()<<"!"<<endl; } sf::Sprite pSpriteName(pImageName); }...
Ich bin was klassen angeht echt noch ein bissian unerfahren.
Hab ich es total falsch gemacht, oder ist es schon ok..?
So siehts in der main.cpp aus:CSprite Cr; Cr.Load(Calen, SCalen, "data/.."); //.... // Move the sprite if (App.GetInput().IsKeyDown(sf::Key::Left)) SCalen.Move(-200 * ElapsedTime, 0); if (App.GetInput().IsKeyDown(sf::Key::Right)) SCalen.Move( 200 * ElapsedTime, 0);
Das sind die Fehler:
1>c:\users\-\desktop\weltraumshooter - teil 2\weltraumshooter - teil 2\main.cpp(16) : error C2065: 'Calen': nichtdeklarierter Bezeichner
1>c:\users\-\desktop\weltraumshooter - teil 2\weltraumshooter - teil 2\main.cpp(16) : error C2065: 'SCalen': nichtdeklarierter Bezeichner
1>c:\users\-\desktop\weltraumshooter - teil 2\weltraumshooter - teil 2\main.cpp(33) : error C2065: 'SCalen': nichtdeklarierter Bezeichner
1>c:\users\-\desktop\weltraumshooter - teil 2\weltraumshooter - teil 2\main.cpp(33) : error C2228: Links von ".Move" muss sich eine Klasse/Struktur/Union befinden.
1> Typ ist ''unknown-type''
1>c:\users\-\desktop\weltraumshooter - teil 2\weltraumshooter - teil 2\main.cpp(34) : error C2065: 'SCalen': nichtdeklarierter Bezeichner
1>c:\users\-\desktop\weltraumshooter - teil 2\weltraumshooter - teil 2\main.cpp(34) : error C2228: Links von ".Move" muss sich eine Klasse/Struktur/Union befinden.
1> Typ ist ''unknown-type''
1>Sprite.cpp
1>c:\users\-\desktop\weltraumshooter - teil 2\weltraumshooter - teil 2\sprite.cpp(5) : error C2082: Neudefinition des formalen Parameters "pImageName"
1>c:\users\-\desktop\weltraumshooter - teil 2\weltraumshooter - teil 2\sprite.cpp(6) : error C2228: Links von ".LoadFromFile" muss sich eine Klasse/Struktur/Union befinden.
1> Typ ist 'char *'
1>c:\users\-\desktop\weltraumshooter - teil 2\weltraumshooter - teil 2\sprite.cpp(8) : error C2082: Neudefinition des formalen Parameters "pSpriteName"
1>c:\users\-\desktop\weltraumshooter - teil 2\weltraumshooter - teil 2\sprite.cpp(8) : error C2664: 'sf::Sprite::Sprite(const sf::Image &,const sf::Vector2f &,const sf::Vector2f &,float,const sf::Color &)': Konvertierung des Parameters 1 von 'char *' in 'const sf::Image &' nicht möglich
1> Ursache: Konvertierung von 'char *' in 'const sf::Image' nicht möglich
1> Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutigIch hab natürlich schon einiges versucht, da ging aber alles
nicht. Hoffe auf Hilfe!
Lg Generator!
-
Naja. Die Fehlermeldung sagt ja bereits alles. Was ist Calen und SCalen?!
-
Ich frage mich, warum du eine eigene Sprite-Klasse entwickelst. SFML bietet bereits eine:
http://www.sfml-dev.org/documentation/1.5/classsf_1_1Sprite.htm
Gegebenenfalls könntest du eine Art Resourcen-Manager programmieren, welcher die Grafiken (Images) lädt und bei Bedarf neue Sprites erzeugt.
Pseudo-Code:
SpriteManager sm; sm.loadAll(); sf::Sprite anAlien = sm["AlienShip"]; sf::Sprite myShip = sm["PlayerShip"]; ...
Der Manager kümmert sich um die Grafiken. Und erstellt bei Bedarf Sprites.
---
(i) Sprites (sf::Sprite) halten Referenzen bzw. Zeiger auf Grafiken (sf::Image). Es gibt gute Gründe dafür, das getrennt zu halten.
---
Dein gezeigter Code sieht jedoch noch ziemlich konfus aus. Ich denke mal, dass du dich noch etwas tiefer mit Klassen beschäftigen solltest. Klassen sind kein Allheilmittel.
Grüße ... Heiko