2017-03-04 3 views
0

J'essaie de supprimer un carré lorsque je saisis le nombre "1" dans le programme. Comment puis-je le supprimer?Comment supprimer un objet dans 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; 

Répondre

3

SFML lui-même ne sera pas suivre ce qui est dessiné sur l'écran - vous devrez faire vous-même - et vous êtes censé redessiner le contenu de la fenêtre en cas de besoin.

Une « boucle principale » de base pour un programme SFML regarderais généralement comme ceci:

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(); 
} 

Selon ce que vous dessinez, vous déterminez ce qui est visible à l'écran. Donc, si vous voulez que votre rectangle n'apparaisse plus, n'appelez plus window.draw(rectangle);. Comment vous réalisez cela - par ex. en supprimant le rectangle d'un std::vector<sf::Drawable*> qui est répété pendant le dessin - c'est à vous de décider.

1

Vous ne pouvez pas le supprimer lorsque vous l'avez créé comme cela. vous pouvez le colorier comme transparent en utilisant sf::Color::Transparent et il deviendra insaisissable.

Si vous souhaitez le supprimer. vous devez en faire un pointeur en premier. ou enveloppez-le dans une classe qui le gère.

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

puis d'utiliser std :: unique_ptr :: reset() pour le supprimer.

rect.reset();