0
在我的按钮类,我有这个功能,它检查鼠标按钮的范围内:SFML按钮无效
bool Button::isMouseOver(int mousePosX, int mousePosY) {
if (button.getPosition().x < mousePosX &&
button.getPosition().x + button.getSize().x > mousePosX &&
button.getPosition().y < mousePosY &&
button.getPosition().y + button.getSize().y > mousePosY) {
return true;
}
return false;
}
,然后在我的主要的cpp文件我都用来激活这个逻辑功能:
int mousePosX = sf::Mouse::getPosition().x;
int mousePosY = sf::Mouse::getPosition().y;
switch (Event.type) {
case sf::Event::Closed:
window.close();
case sf::Event::MouseButtonPressed:
if (btnPlay.isMouseOver(mousePosX, mousePosY)) {
std::cout << "True\n";
}
}
但由于某种原因,没有任何反应。而且我知道这可以起作用,因为我在其他游戏中拥有相同的代码并且工作正常。
为什么你不使用每个case的'break'语句? –
您应该可以获取鼠标相对于窗口的位置,而不是桌面。 'sf :: Mouse :: getPosition(window);' –
并使用'mapPixelToCoords':http://www.sfml-dev.org/tutorials/2.3/graphics-view.php#coordinates-conversions – Hiura