2011-03-24 7 views
1

私はゲームを構築しています。私の構造では、Gameクラスが要素を描画するように要求しています。これは、ゲームのクラスのインスタンスUIGraphicsGetCurrentContext()で何が問題になっていますか?

//賭け事にdrawメソッドを呼び出しますUIViewのクラスから継承されたクラスによって行われるゲームの方法を描画するすべてのオブジェクトを頼むのでゲーム

- (void)drawRect:(CGRect)rect { 
    // Drawing code 

    CGContextRef context = UIGraphicsGetCurrentContext(); 
    [jeu draw:context]; 
} 

//のistanceです自身

-(void) draw: (CGContextRef) gc{ 
    GameElement* element ; 

    for(element in drawArr) 
    { 
     [element draw:(CGContextRef) gc]; 
    } 
} 

いくつかの要素(すべてのスーパークラスGameElementによって継承されているボールと2つの境界)を正しく描くが、いくつかの境界線は、ここでDRだない

ん国境

- (void) draw: (CGContextRef) gc 
{  
    CGFloat black[4] = {0.0f, 0.0f, 0.0f, 1.0f}; // R G B + Alpha 
    CGPoint p [2]; 
    p[0].x = xStart ; 
    p[0].y = yStart ; 
    p[1].x = xEnd ; 
    p[1].y = yEnd ; 
    CGContextSetStrokeColor(gc, black); //Definie la couleur 
    CGContextStrokeLineSegments(gc, p, 2) ; 
} 

のAW方法は、だから、コンソールログに私が読んで:

Thu Mar 24 21:53:59 MacBook-Air-di-Michele-Giarratana.local IVBricker[381] <Error>: CGContextDrawImage: invalid context 0x0 
Thu Mar 24 21:53:59 MacBook-Air-di-Michele-Giarratana.local IVBricker[381] <Error>: CGContextSetStrokeColor: invalid context 0x0 
Thu Mar 24 21:53:59 MacBook-Air-di-Michele-Giarratana.local IVBricker[381] <Error>: CGContextStrokeLineSegments: invalid context 0x0 
Thu Mar 24 21:53:59 MacBook-Air-di-Michele-Giarratana.local IVBricker[381] <Error>: CGContextSetStrokeColor: invalid context 0x0 
Thu Mar 24 21:53:59 MacBook-Air-di-Michele-Giarratana.local IVBricker[381] <Error>: CGContextStrokeLineSegments: invalid context 0x0 
Thu Mar 24 21:53:59 MacBook-Air-di-Michele-Giarratana.local IVBricker[381] <Error>: CGContextSetStrokeColor: invalid context 0x0 
Thu Mar 24 21:53:59 MacBook-Air-di-Michele-Giarratana.local IVBricker[381] <Error>: CGContextStrokeLineSegments: invalid context 0x0 
Thu Mar 24 21:53:59 MacBook-Air-di-Michele-Giarratana.local IVBricker[381] <Error>: CGContextSetStrokeColor: invalid context 0x0 
Thu Mar 24 21:53:59 MacBook-Air-di-Michele-Giarratana.local IVBricker[381] <Error>: CGContextStrokeLineSegments: invalid context 0x0 
Thu Mar 24 21:53:59 MacBook-Air-di-Michele-Giarratana.local IVBricker[381] <Error>: CGContextSetStrokeColor: invalid context 0x0 
Thu Mar 24 21:53:59 MacBook-Air-di-Michele-Giarratana.local IVBricker[381] <Error>: CGContextStrokeLineSegments: invalid context 0x0 

そして私は地獄はそれが何を意味するのか見当がつかない。 ViewDesignerで作成されたグラフィックコンテキストが、特定のオブジェクトが自分自身を描画する理由と、他のオブジェクトが描画しない理由は同じですか?

ありがとうございました

答えて

0

あなたの状況は無効となっています。無効なコンテキストを持つ最初のものを見つけるまで、各GameElement描画メソッドでgc == nilをチェックします。

UIViewはdrawRect:を呼び出す前に現在のコンテキストを設定しますが、drawRectを手動で呼び出さないで、代わりにsetNeedsDisplayメソッドを使用します。 UIGrhicsPushContextを呼び出しコンテキストが死ぬことができる

他の方法は、()

私はそれが無効だところ、あなたは手掛かりを持っています決定した後だと思います。

関連する問題