我一直在寻找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提供的额外注释)