2013-03-22 141 views
0

我正在使用sfml。我需要編寫一個函數,它將創建一個sf :: RectangleShape類型,並在當前時間返回一個新的sf :: RectangleShape,並且在當前時間位置,並且在使用window.draw()後停留在那裏。現在我的代碼是:從內存創建變量

sf::RectangleShape functions::Map(sf::RectangleShape wall0){ 

    wall0.setPosition(0,0); 
    wall0.setSize(sf::Vector2f(200,200)); 
    wall0.setFillColor(sf::Color::Green); 
    wall0 = this->wall0; 
    return wall0; 
} 

void functions::Draw(){ 

    window.clear(); 
    window.draw(logo); 
    if (menu){ 

     window.draw(menuStart); 
      window.draw(menuOptions); 
      window.draw(menuExit); 
    } 
    if (playing){ 
     void Map(); 
     window.draw(wall0); 
     if (sf::Mouse::isButtonPressed(sf::Mouse::Left)){ 



    } 



} 

我想在按下鼠標左鍵時返回wall0的新鼠標位置。我知道如何獲得鼠標輸入,但不知道如何繪製對象並將其保存在窗口上。我已經將它拖到了鼠標按鈕被點擊的時候繪製對象的地方,但它並沒有停留。

+0

'這 - > wall0' ??顯示'Map'類。 – 2013-03-22 16:21:57

回答

0

我不熟悉SFML - 但簡單地看你的代碼,這就是我想你想做的事:

void functions::Map(sf::RectangleShape & wall0){ 

    wall0.setPosition(0,0); 
    wall0.setSize(sf::Vector2f(200,200)); 
    wall0.setFillColor(sf::Color::Green); 
} 

然後功能:: Draw方法:

... 
if (playing){ 
    window.draw(Map(wall00)); 
    if (sf::Mouse::isButtonPressed(sf::Mouse::Left)){ 
    ... 
+0

沒有沒有工作我得到的錯誤太多的函數調用和window.draw沒有重載函數的實例 – user1068329 2013-03-22 17:38:50

+0

是函數::映射函數或類成員?試試函數:: Map(wall0)? – HughB 2013-03-22 17:41:28

+0

嗯,現在我只是沒有重載函數的實例... annot將參數1從'void'轉換爲'const sf :: Drawable'' – user1068329 2013-03-22 17:46:07