Я пытался исправить эту проблему около часа или более ... Но не нашел полезных ответов. Я пытаюсь разместить спрайт в центре окна, но он отображается на TOP_LEFT. Вот конструктор для моего класса и, как вы можете видеть, я разделив surface.width и surface.height на 2SFML Место Sprite по центру
Spaceship::Spaceship(sf::RenderWindow& game_window){
auto surface = game_window.getSize();
signed int ss_x = surface.x/2;
signed int ss_y = surface.y/2;
int ss_width = 128;
int ss_height = 128;
int ss_radius = ss_width/2;
}
///////////////////////////////////////////
// For displaying the sprite on window //
///////////////////////////////////////////
void Spaceship::drawsprite(sf::RenderWindow& game_window){
sf::Texture ship;
if (!ship.loadFromFile(resourcePath() + "space-shuttle-64.png")) {
return EXIT_FAILURE;
}
sf::Sprite ss_sprite(ship);
ss_sprite.setPosition(ss_x, ss_y);
game_window.draw(ss_sprite);
}
Я также попытался с:
auto surface = game_window.RenderWindow::getSize();
signed int ss_x = surface.x/2;
signed int ss_y = surface.y/2;
, но это не помогло или.
UPDATE:
Я попытался напечатать переменные, которые определены внутри конструктора, и я получил 0 на всех из них. Поэтому мои проблемы, похоже, являются проблемой доступа. но не было никаких ошибок или предупреждений, которые мне это сказали.
UPDATE 2:
это заголовочный файл:
#ifndef Spaceship_hpp
#define Spaceship_hpp
#include <iostream>
#include <SFML/Audio.hpp>
#include <SFML/Graphics.hpp>
#include <stdio.h>
using namespace std;
class Spaceship {
public:
Spaceship();
Spaceship(sf::RenderWindow&);
~Spaceship();
void moveship(char);
void drawsprite(sf::RenderWindow&);
private:
signed int ss_x, ss_y;
unsigned int ss_speed;
int ss_width, ss_height, ss_radius;
};
#endif /* Spaceship_hpp */
Как вы описываете свой класс? В частности, задействованные переменные и ваш конструктор и ваш метод drawsprite. – ShadowMitia
@ShadowMitia, обновленный вопрос. –