2013-03-22 219 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