我一直在查看SFML文档以制作可点击的精灵,但到目前为止我还没有找到任何东西。 你认为你可以帮助我吗?
答案 0 :(得分:8)
到目前为止,SFML中有无之类的sf::ClickableSprite
,可能永远不会有。 (Current list of classes in SFML)
但是,您可以使用sf::Sprite
对象和事件获取此行为。这个想法很简单 - 只要你得到sf::Mouse::isButtonPressed(sf::Mouse::Left)
事件,检查鼠标是否在精灵中。如果是,请执行操作。您可以在释放按钮时执行其他操作(可能是撤消)。
有sf::Sprite::getGlobalBounds()函数可以返回精灵的位置和尺寸。还有sf::Mouse::getPosition()函数,它返回鼠标的当前位置。 您可以使用sprite.getGlobalBounds().contains(mousePos)
检查鼠标是否在精灵中。
如果您正在使用视图,则需要将视图的位置添加到sf::Mouse::getPosition(window)
,因为它会获得相对于窗口坐标的鼠标位置。
(感谢Chaosed0了解其他说明。)