再次您好(感谢大家之前的宝贵帮助)。
新问题:我正在进行物理模拟,但遇到了玩具版本的问题。它所做的只是每次NSStimer timer
调用该tick
方法时在 iPhone/Touch 屏幕上绘制一个随机矩形。我已将这些调用编入索引int frameCount
。人们看到的是两组图像逐渐建立起来:一组用于偶数帧,另一组用于奇数帧。frameCount
我通过将偶数和奇数在稍微不同的位置上绘制到屏幕上来验证这一点。因此,人们会看到计数与帧中的图像同步来回闪烁。缩写代码如下。我很感激你可能有的任何建议。在我看来,必须有两个屏幕外缓冲区。但是我在这里一无所知:-) 即使这是真的,我也不知道如何合并它们,或者将一个复制到另一个。
#define MAXFRAMES 1000
// UIView 的子类 FooBar 实现的相关部分:
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
// Start a timer that will call the tick method of this class
// 30 times per second -- slowed way down for diagnostics
timer = [NSTimer scheduledTimerWithTimeInterval:(3.0/1.0)
target:self selector:@selector(tick) userInfo:nil repeats:YES];
frameCount = 0;
self.clearsContextBeforeDrawing = NO;
NSLog(@"frame initialized");
}
return self;
}
- (void)tick
{
// Tell the view that it needs to re-draw itself
if (frameCount < MAXFRAMES) {
[self setNeedsDisplay];
frameCount++;
}
}
- (void)drawRect:(CGRect)rect
{
CGContextRef ctx = UIGraphicsGetCurrentContext();
// Draw a random rectangle with CGContextFillRect
// after calling CGContextSetRGBFillColor
// Both called with suitable random parameters
// Draw the frameCount for diagnostic purposes
}