Спрайт не отображается

SFML и C++ Уроки \ Разработка игр Форумы SFML Graphics Спрайт не отображается

В этой теме 0 ответов, 1 участник, последнее обновление  Kersh 3 года/лет, 10 мес. назад.

Просмотр 1 сообщения - с 1 по 1 (всего 1)
  • Автор
    Сообщения
  • #5188

    Kersh
    Участник
    Сообщений:0

    Зарегистрирован:
    25.05.2020

    Репутация:0

    Решил создать класс кнопки. Изначально я хотел сделать кнопку как RectangleShape, а не как Sprite, но кнопка так и продолжала не отрисовываться. Через “вставьте код” не получилось вставить, прошу прощения за неудобства. Убрал все лишнее из кода и добавил комментарии, чтобы вам было понятно что я вообще хотел сделать.

    #include “SFML/Graphics.hpp”
    #include <string>
    using namespace sf;

    //класс кнопок
    class button
    {
    public:
    //имя файла
    String File;
    //изображение, текстура и спрайт
    Image image;
    Texture texture;
    Sprite sprite;

    //конструктор
    button(int red, int gre, int blu, int ared, int agre, int ablu, int x, int y, int xpo, int ypo, String F)
    {
    File = F;
    image.loadFromFile(“res/”+ File);
    texture.loadFromImage(image);

    sprite.setTexture(texture);

    sprite.setTextureRect(IntRect(0,0,xs,ys));
    sprite.setScale(xs, ys);
    sprite.setPosition(xpos,ypos);
    sprite.setColor(Color(r,g,b, 200));
    r = red; g = gre; b = blu;
    ar = ared, ag = agre, ab = ablu;
    xs = x; ys = y; xpos = xpo; ypos = ypo;
    }

    //функция, ставящая кнопку в норм. состояние
    void Normal()
    {
    sprite.setColor(Color(r,g,b, 200));
    }
    //ставит кнопку в нажатое состояние
    void Active()
    {
    sprite.setColor(Color(ar,ag,ab, 200));
    }

    private:
    //скейл по икс и игрек
    int xs, ys;
    //RGB в обычном состоянии
    int r,g,b;
    //RGB в нажатом состоянии
    ar, ag, ab;
    //координаты кнопки
    xpos, ypos;
    };

    int main()
    {
    //создание кнопки
    button rightButton(50,50,50,80,80,80, 150, 150, 450, 700, “button.png”);

    RenderWindow renderWindow(VideoMode(2340, 1080), “window”);

    while (renderWindow.isOpen())
    {
    Event event;

    while (renderWindow.pollEvent(event))
    {
    if (event.type == Event::EventType::Closed)
    {
    renderWindow.close();
    }
    }
    renderWindow.clear(Color::White);
    //отрисовка кнопки renderWindow.draw(rightButton.sprite);
    renderWindow.display();
    }
    return 0;
    }

Просмотр 1 сообщения - с 1 по 1 (всего 1)

Для ответа в этой теме необходимо авторизоваться.