У меня есть NSBox
, внутри которого я рисую маленькие прямоугольники с 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)];
}
Первый цикл forКстати, единственная вещь внутри функции executeFrame
.Итак, что мне нужно сделать, это стереть все прямоугольники между кадрами, чтобы их количество оставалось неизменным, и они выглядели так, как будто они движутся.Я попытался сделать это, просто нарисовав фон снова, вызвав [myNsBox display];
перед вызовом executeFrame
, но это выглядело так, как будто не было нарисовано прямоугольников.Вызов его после сделал то же самое, так же как и переключение setNeedsDisplay
вместо отображения.Я не могу понять это, любая помощь будет оценена.
Кстати, дополнительная вещь заключается в том, что, когда я пытаюсь запустить свой код для выполнения фреймов, не пытаясь стереть прямоугольники между ними, всетак получилось, что нарисовано еще 100 прямоугольников.Даже если бы я попросил сделать 1000 или 10 000.Но тогда, если я покину окно и вернусь к нему (немедленно, время здесь не имеет значения), страница обновится, и прямоугольники появятся.Я попытался преодолеть это с помощью [box setNeedsDisplayInRect:array[i]];
, который работал странным образом, заставляя его обновлять каждый кадр, но стирая части прямоугольников.Любая помощь в этом также будет оценена.