getLocalBounds альтернатива для текстовых объектов?(SFML) - PullRequest
1 голос
/ 30 апреля 2019

Пытаясь сделать кнопки, использующие SFML для Comp Sci, финальными и на самом деле не хотим рисовать невидимые спрайты над каждой кнопкой.

Я нашел некоторые решения, но все они использовали более старые версии sfml и эти функциис тех пор были удалены или изменены и не уверены, на что они были изменены.

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

            while(window.pollEvent(event)){

                switch(event.type)
                {

                    case Event::Closed:
                        window.close();
                        cout << "Window Closed!" << endl;
                        break;

                    case Event::MouseButtonPressed:
                        if(event.mouseButton.button == Mouse::Left){
                            cout << "  if(event.mouseButton.button == Mouse::Left){" << endl;
                            if(equationsButtonText.getLocalBounds().contains(event.mouseButton.x, event.mouseButton.y)){
                                cout << "This works!" << endl;
                                }
                            }

                    default:
                    break;
                    }
                }
            }

cout << "if (event.mouseButton.button == Mouse :: Left) {" <<endl;было просто проверить, как далеко он зашёл в петлю. </p>

1 Ответ

0 голосов
/ 01 мая 2019

getLocalBounds возвращает границы в локальных координатах текста.Вам нужно использовать getGlobalBounds, чтобы получить его в мировых координатах.

Вам также необходимо использовать метод mapPixelToCoords вашего окна, чтобы преобразовать координаты мыши также в мировые координаты.

Это было бы что-то вроде этого:

if(equationsButtonText.getGlobalBounds().contains(window.mapPixelToCoords({event.mouseButton.x, event.mouseButton.y}))){
    cout << "This works!" << endl;
}
...