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