2014-09-05 77 views
0

我目前正在学习SFML,并试图弄清楚如何在pollevent部分的bposXbposY中打印点击区域的位置。氏s是我的代码:使用SFML获取点击位置


sf::RectangleShape smallRectangle (float width = 1.0f, float height = 1.0f, 
           sf::Vector2f position = sf::Vector2f(1.0f,1.0f), 
           const sf::Color& myFillColor = sf::Color(0,51, 51) 
           ) 
{ 
    sf::RectangleShape sboard; 
    sf::Vector2f myRectangleSize(width, height); 
    sboard.setSize(myRectangleSize); 
    sboard.setPosition(position); 
    sboard.setFillColor(myFillColor); 
    return sboard; 
} 

case sf::Event::MouseButtonPressed: 
       switch(event.mouseButton.button) 
        case sf::Mouse::Left: 
        { 
         float bposX = sboard.getPosition().x; 
         float bposY = sboard.getPosition().y; 
         cout << "Current Position : "; 
         cout << bposX << " " << bposY << endl; 
        break; 
        } 

for(int i=0; i < sgridSize; i++) 
{ 
    for (int j = 0; j < sgridSize; j++) 
    { 
     window.draw(sgrid[i][j]); 
     sf::FloatRect sgridBounds = sgrid[i][j].getGlobalBounds(); 
     if(sgridBounds.contains((sf::Vector2f)pointerPos)) 
     { 
      shighlightCell.setPosition(sgrid[i][j].getPosition()); 
      window.draw(shighlightCell); 
      if(sf::Mouse::isButtonPressed(sf::Mouse::Left)) 
      { 
       sgrid[i][j].setFillColor(sf::Color::Green); 
      } 
     } 
    } 
} 

当我在矩形点击它仅显示1 1,根据我Vector2f位置。

+0

很酷。问题是什么? – Conduit 2014-09-05 17:24:44

+0

当我点击矩形时,它应该显示在cmd中的点击位置。相反,它只显示我的Vector2f值的位置。并为我的坏英语感到抱歉。 – 2014-09-05 17:29:28

+0

[奇怪的SFML行为]的可能的重复(http://stackoverflow.com/questions/25149152/strange-sfml-behavior) – Hiura 2014-09-05 17:51:43

回答

0

假设我正确读取您的代码,sboardsf::RectangleShape。机会实际上是想要鼠标的位置,而不是这个矩形。鼠标位置是通过静态函数sf::Mouse::getPosition()给出的,该坐标相对于桌面或sf::Mouse::getPosition(window)给出坐标,这将给出鼠标相对于sf::Windowsf::RenderWindow实例的位置。

我建议您在学习基础知识的同时阅读SFML网站上的教程。 This one is immediately useful

+0

好的,我明白,并感谢您的链接。但是如果我想要矩形的位置呢?如何打印阵列位置?我试过这个,矢量< vector> vec; VEC = sgrid [i] [j];但给出错误。 – 2014-09-05 17:44:36

+0

点击矩形的位置,你的意思是? – Conduit 2014-09-05 17:46:47

+0

是的,点击矩形的位置。 – 2014-09-05 17:49:44

相关问题