C++ SFML 1.6 带鼠标的 Sprite 位置

标签 c++ button input mouse sfml

在使用 SFML 1.6 时,我遇到了一个小问题,我知道有一个简单的解决方案,但我目前想不出/无法通过研究找到答案。

我知道我必须使用 TransformToGlobal(someVector) 将 Sprite 转换为全局位置,但我不知道将它放在哪里。

这是我正在使用的代码示例,它不起作用,因为它不在全局位置。

if(sprite.GetSubRect().Contains(mouseX, mouseY))
    sprite.SetImage(someImage);
else
    sprite.SetImage(someOtherImage);

我尝试添加 sprite.TransformToGlobal(sprite.GetPosition());之前,但效果不佳。

最佳答案

您可以尝试使用转换后的鼠标位置,然后检查 Sprite 是否包含鼠标:

sf::Vector2f mousePos = App.ConvertCoords(App.GetInput().GetMouseX(), App.GetInput().GetMouseY());

if(sprite.GetSubRect().Contains(mousePos.x, mousePos.y))
    sprite.SetImage(someImage);
else
    sprite.SetImage(someOtherImage);

关于C++ SFML 1.6 带鼠标的 Sprite 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9552107/

相关文章:

jsf-2 - 如何自定义 Primefaces' Growl 所需的验证消息

我可以从 C 中的文本文件中读取 int 吗,如果我知道会有 (space)###(space)

c++ - 继承包含另一个派生类的 C++ 类

C++ 编程工具

excel - 将宏分配给在运行时 VBA 中创建的按钮

javascript - 使用按钮单击更新 For 循环中从 Firestore 返回的值

C++ getline(), 第二次运行这个函数不起作用

c++ - C++程序隐藏指针的良好定义

c++ - `recv()` 会导致缓冲区溢出吗?

javascript - 我可以在 ASP.NET 按钮上暂停回发并在完成某些任务后继续吗?