NSBox
, 그 중 작은 사각형을 그리는 중 NSRectFill()
이 있습니다. 내 코드는 다음과 같습니다.NSRectFill으로 코코아 지우기가 끝났습니까?
for (int i = 0; i <= 100; i++){
int x = (rand() % 640) + 20;
int y = (rand() % 315) + 196;
array[i] = NSMakeRect(x, y, 4, 4);
NSRectFill(array[i]);
}
이 for 루프는 격자 내에 임의로 배치 된 직사각형을 100 개 생성합니다.
for (int i = 0; i <= 10; i++) {
[self performSelector:@selector(executeFrame) withObject:nil afterDelay:(.05*i)];
}
루프의 첫 번째는 유일한 것입니다 : 내가 뭘하려고 한 것은이 코드로, 반복 실행이 코드에 의해 생성 애니메이션의 종류, 생성 무작위로 나타나는 사각형의 애니메이션을 만드는 것입니다 그런데, executeFrame
함수 안에서. 그래서, 제가해야 할 일은 프레임 사이의 모든 사각형을 지우는 것입니다. 그래서 그것들의 수는 동일하게 유지되고 움직이는 것처럼 보입니다. executeFrame
를 호출하기 전에 [myNsBox display];
을 호출하여 배경을 다시 그려 보았습니다.하지만 사각형이 그려지지 않은 것처럼 보였습니다. 같은 것을 한 후에 호출하면 디스플레이 대신에 setNeedsDisplay
으로 전환합니다. 나는 이것을 이해할 수 없으며, 어떤 도움을 주시면 감사하겠습니다.
덧붙여서, 추가적으로, 프레임을 실행하기 위해 코드를 실행하려고 할 때, 그 사이에 사각형을 지우지 않고, 100 개의 사각형이 그려지는 것입니다. 제가 1000 그루의 그림을 그리도록 요청했거나, 10,000 장을 그렸습니다. 그럼에도 불구하고 창을 나가서 다시 돌아 오면 (즉, 시간은 여기에 요인이되지 않습니다.) 페이지가 업데이트되고 사각형이 있습니다. 나는 이것을 이상한 방법으로 작업 한 [box setNeedsDisplayInRect:array[i]];
으로 극복하려고 시도하여 모든 프레임을 업데이트하지만 사각형의 일부를 삭제했습니다. 이것에있는 어떤 도움든지 또한 평가 될 것입니다.
그것은 당신의보기를 보내는 것은'display' 메시지가 올바른 해결책이 매우 드문 다운로드 할 수 있습니다. 일반적으로 'needsDisplay'를 설정하고 AppKit이 적절한 시간에 그리도록 지시하고 AppKit에서 지시 할 때 모든 뷰의 그림을 수행하도록합니다. 다른 경우에는 아무 것도 표시하지 않습니다. –