如何在SFML中制作一个可点击的精灵

How do you make a clickable sprite in SFML?

本文关键字:一个 精灵 SFML      更新时间:2023-10-16

我一直在寻找SFML文档制作可点击的精灵,但到目前为止我还没有找到任何东西。你们能帮帮我吗?

到目前为止,在SFML中没有sf::ClickableSprite这样的,可能永远不会有。(SFML中当前的类列表)

但是,您可以通过sf::Sprite对象和事件获得此行为。这个想法很简单——一旦你得到sf::Mouse::isButtonPressed(sf::Mouse::Left)事件,检查鼠标是否在精灵中。如果是,则执行该操作。当按钮被释放时,您可以执行另一个操作(可能是undo)。

有sf::Sprite::getGlobalBounds()函数返回你的位置和精灵的尺寸。还有sf::Mouse::getPosition()函数,它返回鼠标的当前位置。您可以使用sprite.getGlobalBounds().contains(mousePos)来检查鼠标是否在精灵中

如果你正在使用视图,你需要将视图的位置添加到sf::Mouse::getPosition(window),因为它获得相对于窗口坐标的鼠标位置。

(感谢Chaosed0提供的额外注释)