SFML按钮不工作
SFML Button Not Working
在我的按钮类下,我有一个检查鼠标是否在按钮范围内的函数:
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 << "Truen";
}
}
但由于某种原因,什么也没发生。我知道这是可行的,因为我在其他游戏中也有同样的代码,而且效果很好。
稍微偏离主题,您评论
我知道这是可行的,因为我在我的另一个游戏,它工作得很好。
引发了我的思考,你可能想考虑将其泛化,并制作类似的东西
bool IsInside(windowPos wp, windowSize ws, someOtherPos sop) {
if (wp.x < sop.X &&
wp.x + ws.x > sop.X &&
wp.y < sop.Y &&
wp.y + ws.y > sop.Y) {
return true;
}
return false;
}
bool Button::isMouseOver(Vector2i mousePos) {
return IsInside(getPosition(), getSize(), mousePos) ;
}
IsInside
中的音符类型并不精确,实际上可能是相同的(Vector2i
)。
这也使正确性测试变得更容易,并消除了复制代码的错误源。
相关文章:
- QSqlquery prepare()和bindvalue()不工作
- 导入库可以跨dll版本工作吗
- 问:如何使用C++中的按钮从窗口打开窗口
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 以螺旋方式打印矩阵的程序.(工作不好)
- 对象指针在c++中是如何工作的
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- QML按钮点击功能执行顺序
- 当用户超过按钮点击限制时报告
- C++为线程工作动态地分割例程
- 为什么我的 std::ref 无法按预期工作?
- 如何使用回调使工作变得简单按钮类?
- CButton派生的'SubclassDlgItem'在VS2015 CLR的CDialogBar上不可见,但响应按钮点击,在VC++ 6中工作正常
- 模拟鼠标按钮按QT 5.3仅第一次工作
- SDL 按钮/事件停止工作
- 默认按钮只工作一次
- 图像上的按钮不正常工作在QT
- SFML按钮不工作