尝试使用switch语句来移动与鼠标位置相关的图像c ++ SFML

Posted

技术标签:

【中文标题】尝试使用switch语句来移动与鼠标位置相关的图像c ++ SFML【英文标题】:trying to use switch statement to move an image in relation to mouse position c++ SFML 【发布时间】:2014-03-13 13:37:44 【问题描述】:

由于我是一般编码的新手,但我确信我的想法只是朝着错误的方向前进...... 我正在尝试让精灵在左键单击时追逐鼠标。我曾尝试使用 else if 语句,但即使多次单击也只有前 2 个语句会运行。 我想能够说如果 mouseposition.x > playerposition.x 然后将 playerimage 向右移动,那么一个用于其他方向。 因为我使用的是 sfml,所以我使用下面的方法来获取两者的位置。

sf::Vector2i mousePosition = sf::Mouse::getPosition(window);
sf::Vector2f playerPosition = playerImage.getPosition();

我希望使用下面的 switch 语句,但我不知道如何创建参数并将案例与该参数进行比较。

if(sf::Mouse::isButtonPressed(sf::Mouse::Left))
    switch()
    
    case 1: 
            playerImage.move(0.02, 0);
    case 2:
            playerImage.move(-0.02, 0);
    case 3:
            playerImage.move(0, -0.02);
    case 4:
            playerImage.move(0, 0.02);
    

【问题讨论】:

我不明白..你在找寻路吗? 这是在碰撞之前我只希望图像在单击左键时转到鼠标位置。只画了一个窗口和一个播放器图标 然后我会去 if (mousePosition.x 得到它thanx Raakz,我之前犯了使用else语句的错误,而不是我使用if语句列表现在只要左键单击,即使在四处移动时,图标也会追逐鼠标。感谢您走上正确的思路。我会粘贴代码,但我不允许使用应答按钮 【参考方案1】:

也许是这样的?

if (sf::Mouse::isButtonPressed(sf::Mouse::Left)) 

  sf::Vector2f offset;

  if (mousePosition.x > playerPosition.x) 
    offset.x = 0.02f;
   else if (mousePosition.x < playerPosition.x) 
    offset.x = -0.02f;
  

  if (mousePosition.y > playerPosition.y) 
    offset.y = 0.02f;
   else if (mousePosition.y < playerPosition.y) 
    offset.y = -0.02f;
  

  playerImage.move(offset);


【讨论】:

以上是关于尝试使用switch语句来移动与鼠标位置相关的图像c ++ SFML的主要内容,如果未能解决你的问题,请参考以下文章

需要对图像进行动画处理以在每次鼠标悬停时从光标位置移开?

以鼠标位置为中心的图像缩放

switch语句 switch语句的相关知识

用鼠标移动物体?

我可以在 switch 语句中使用字符串并将 .contains() 与 Java 一起使用吗?

移动鼠标时抖动