2014-09-05 107 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