0

こんにちは(以前の貴重な助けに感謝します)。

新しい問題:物理シミュレーションを作成していますが、おもちゃのバージョンで問題が発生しました。NSStimer timerメソッドを呼び出すたびに、iPhone/タッチスクリーンにランダムな長方形を描画するだけtickです。これらの呼び出しに。でインデックスを付けましたint frameCount。目に見えるのは、2セットの画像が徐々に蓄積されていることです。1セットは偶数フレーム用で、もう1セットは奇数フレーム用です。frameCountわずかに異なる位置で偶数と奇数のカウントを使用して画面に描画することにより、これを検証しました。したがって、フレーム内の画像と同期してカウントが前後に点滅しているのがわかります。省略コードは以下のとおりです。私はあなたが持っているかもしれないどんな提案にも感謝します。私には、2つのオフスクリーンバッファが必要であるように思われます。しかし、私はここで暗闇の中にいます:-)そして、これが真実であるとしても、私はそれらをマージする方法、または一方を他方にコピーする方法を知りません。

#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

}
4

1 に答える 1

0

UIView がその描画レイヤーで使用する可能性のあるバッファーの数は指定されていません。図面をコピーする場合は、独自の CG 描画コンテキストから描画し、その結果をビューの CALayer コンテンツとして使用できる画像に使用または描画する必要があります。

于 2011-01-23T02:20:10.920 に答える