2017-03-04 6 views
0

数字を1にして正方形を削除しようとしました。どうすれば削除できますか?SFMLでオブジェクトを削除する方法

sf::RectangleShape rec1(sf::Vector2f(50, 100)); 
rec1.setPosition(200, 700); 
rec1.setFillColor(sf::Color(100, 250, 50)); 
window.draw(rec1); 

int num; 
cout << "Please enter a number: "; 
cin >> num; 

答えて

3

SFML自体は、画面上に描かれているものを追跡しません - あなたは自分であることを行う必要があるでしょう - あなたが必要なときにウィンドウの内容を再描画することになっています。 SFMLベースのプログラムのための

基本的な「メインループ」は、典型的には次のようになります。

while (window.isOpen()) { 
    sf::Event event; 
    while (window.pollEvent(event)) { 
     // Handle events here 
    } 

    // Update your program logic here 

    window.clear(); 

    // Draw your stuff here 

    window.display(); 
} 

あなたが描く内容に応じて、あなたが画面上に表示何を決定します。したがって、長方形が表示されないようにするには、window.draw(rectangle);に電話しないでください。これを達成する方法 - たとえば描画中に反復されたstd::vector<sf::Drawable*>の四角形を削除することで、あなた次第です。

1

このように作成したときは削除できません。 sf::Color::Transparentを使用して透明な色にすることができ、それは不可視になります。

削除したい場合。まずそれをポインタにする必要があります。またはそれを処理するクラスからそれをラップします。

auto rect = make_unique<sf::Rectangle>(sf::Vector2f(50, 100)); 

そして、std :: unique_ptr :: reset()を使用して削除します。

rect.reset(); 
関連する問題