C ++ SFML 1.6鼠标精灵位置

时间:2012-03-04 03:38:47

标签: c++ button input mouse sfml

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

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

以下是我使用的代码示例,该代码无法正常工作,因为它不在全球位置。

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

我尝试添加sprite.TransformToGlobal(sprite.GetPosition());在它之前,但它没有奏效。

1 个答案:

答案 0 :(得分:1)

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

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);