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