2016-08-30 5 views
0

Так что я ищу ответ около 1 месяца, и никто не может понять, что происходит. У меня есть класс GameObject, в котором есть спрайт и текстура, и когда я вызываю функцию -> getSprite() и рисую его в моем окне, я получаю только белую рамку. Я снова повторил свой код 3 раза, и у меня такая же проблема снова и снова. Я буду так счастлив, если кто-нибудь поможет мне в этом. Вот мои файлы. filesC++ SFML текстура и спрайт в классе (белый ящик)

+0

Вы можете начать с добавления нескольких журналов, чтобы отслеживать загрузку PNG-файла – Morb

+0

И btw я только начал с C++ –

+0

Я попробую. –

ответ

0

У меня когда-то была ТОЧАЯ проблема. Я боролся с загрузкой текстуры (.png), но я создал функцию, в которой вы просто передаете ей источник (как строку), а затем возвращает действительный sf :: Sprite.

//loads a graphic from a source 
static sf::Sprite loadSprite(std::string source){ 
    static sf::Texture t; 
    if (!t.loadFromFile(source)){ 
     std::cerr << "Error: File couldn't be loaded" << std::endl; 
    } 
    static sf::Sprite s; 
    s.setTexture(t); 
    return s; 
} 

Попробуйте использовать эту функцию для GameObject.h (и, возможно, других файлов). Чтобы его использовать, просто добавить функцию

void setSprite(std::string source){ 
    sprite = loadSprite(source); //call that function 
} 

в одну из ваших GameObject.h функций публичным, которым вы можете также позвонить из конструктора. Попробуйте! Удачи

+0

Спасибо. Я попробую. –

+0

OMG ты мой HERO –

+0

OMG. ЗАКЛЮЧЕНИЕ Через 1 месяц –

Смежные вопросы