Jurek Temat założony przez niniejszego użytkownika |
[SFML] matching function for call to sf::RenderWindow::Draw » 2012-10-13 18:27:56 Mam dwa pliki jeden glowny #include<sfml/system.hpp> #include<sfml/window.hpp> #include<sfml/graphics.hpp> #include "CreateHero.cpp" #include <iostream> using namespace std; int main() { sf::Vector2f Point, Point1, PositionHero( 0, 0 ); sf::Vector2f PHero; sf::Vector2f Zaznaczanie, Position; int Myszx, Myszy; sf::Event Koniec, Ruch; sf::RenderWindow Okno( sf::VideoMode( 800, 600, 32 ), "", sf::Style::Fullscreen ); Hero( Okno ); Okno.SetFramerateLimit( 60 ); while( Okno.IsOpened() ) { while( Okno.GetEvent( Koniec ) ) { if( Koniec.Type == sf::Event::KeyPressed && Koniec.Key.Code == sf::Key::F1 ) Okno.Close(); } Okno.Clear(); Rysuj( Okno ) Okno.Display(); } return 0; }
w drugim umiescilem funkcje do tworzenia bohatera #include<sfml/system.hpp> #include<sfml/window.hpp> #include<sfml/graphics.hpp>
void CreateHero( sf::Image & Hero1, sf::Sprite & Hero, sf::RenderWindow & Okno, sf::Vector2f & Position ) { Hero.SetImage( Hero1 ); Hero.SetPosition( Hero1.GetWidth() / 2, Hero1.GetHeight() / 2 ); Hero.SetCenter( Hero1.GetWidth() / 2, Hero1.GetHeight() / 2 ); Hero.SetPosition( Position ); }
void Hero( sf::RenderWindow & Okno ) { sf::Image Hero1; Kajko1.LoadFromFile( "Hero1.png" ); sf::Sprite Hero; sf::Vector2f PHero( 20, 20 ); CreateHero( Hero1, Hero, Okno, PHero ); }
void Rysuj( sf::RenderWindow & Okno ) { Okno.Draw( Hero ); }
wyskakuje mi: no matching function for call to sf::RenderWindow::Draw
Jak to naprawic? Chce wykorzystac te same funkcje do tworzenia kilku bohaterow chce je trzymac w oddzielnym pliku |
|
DejaVu |
» 2012-10-13 18:42:14 1. Czytaj log kompilacji ze zrozumieniem... 2. Przemyśl sens linijki: |
|
Jurek Temat założony przez niniejszego użytkownika |
» 2012-10-13 19:32:37 Jakas podpowiedz? |
|
ridic14 |
» 2012-10-13 20:34:27 nie możesz narysować klasy na ekranie tylko obraz lub prymityw z tej klasy(coś co dziedziczy po klasie drawable) |
|
Jurek Temat założony przez niniejszego użytkownika |
» 2012-10-13 21:20:12 jak to naprawic, co zrobic abym mogl narysowac sprite? jak robie w ten sposob wszystko dziala pierwszy plik #include<sfml/system.hpp> #include<sfml/window.hpp> #include<sfml/graphics.hpp> #include "CreateHero.cpp" #include <iostream> using namespace std; int main() { sf::Image Hero1; Hero1.LoadFromFile( "Hero1.png" ); sf::Sprite Hero; sf::Event Koniec, Ruch; sf::RenderWindow Okno( sf::VideoMode( 800, 600, 32 ), "", sf::Style::Fullscreen ); sf::Vector2f PHero( 20, 20 ); CreateHero( Hero1, Hero, Okno, PHero ); Okno.SetFramerateLimit( 60 ); while( Okno.IsOpened() ) { while( Okno.GetEvent( Koniec ) ) { if( Koniec.Type == sf::Event::KeyPressed && Koniec.Key.Code == sf::Key::F1 ) Okno.Close(); } Okno.Clear(); Okno.Draw( Hero ); Okno.Display(); } return 0; } drugi plik #include<sfml/system.hpp> #include<sfml/window.hpp> #include<sfml/graphics.hpp>
void CreateHero( sf::Image & Hero1, sf::Sprite & Hero, sf::RenderWindow & Okno, sf::Vector2f & Position ) { Hero.SetImage( Hero1 ); Hero.SetPosition( Hero1.GetWidth() / 2, Hero1.GetHeight() / 2 ); Hero.SetCenter( Hero1.GetWidth() / 2, Hero1.GetHeight() / 2 ); Hero.SetPosition( Position ); } Chodzi mi o to ze chcialbym wszystkich bohaterow wyrzucic z pliku main, w main chcialbym ich wywolac dodajac inne pliki, oraz uzyc funkcji zeby kod nie byl dlugi |
|
ridic14 |
» 2012-10-14 00:22:04 Teraz masz: Okno.Draw(Hero); a Hero to sf::Sprite Hero.
wcześniej Okno.Draw(Hero); Hero to void Hero czyli funkcja a funkcji raczej nie narysujesz... |
|
Jurek Temat założony przez niniejszego użytkownika |
» 2012-10-14 17:36:10 A jak stworzyc plik aby umiescic w nim tylko dane typu sf::Image Hero1, Hero2,....id Hero1.LoadFromFile( "Hero1" ); sf::Sprite Hero1, Hero2...itd Hero1.SetImage( Heo1 ); i abym mogl dolaczyc go do pliku main i wswitlic wszystkie sprite w main? |
|
ridic14 |
» 2012-10-14 20:53:59 Ten kod wyżej jest dobrze tylko z funkcji void nie wyciągniesz co ma być narysowane... może jakaś klasa ci pomoże... class Hero { public: sf::Sprite Hero; };
Hero hero; App.draw( hero.Hero );
PAMIĘTAJ Rysujesz sprite'a a nie klasę!!! |
|
« 1 » |