2011-03-24 1 views
1

Я создаю игру, поэтому в моей структуре у меня есть класс Game, предлагающий элементам рисовать себя. Это делается с помощью класса, унаследованного от UIView, которая вызывает метод рисования на экземпляре класса GameЧто случилось с UIGraphicsGetCurrentContext()?

// Же является istance из игры

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

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

// поэтому метод игры задать все объекты, чтобы привлечь сами

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

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

некоторых элементов (шара и две границы, которые все унаследованные от суперкласса GameElement) правильно рисовать, но некоторые границы не

вот др Метод ав границ

- (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) ; 
} 

Так на бревне консоли я прочитал:

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

Мы знаем, что ваш контекст становится недействительным. Проверьте, если gc == nil в каждом методе DrawElement GameElement, пока вы не найдете первый с недопустимым контекстом.

UIView будет устанавливать текущий контекст перед вызовом drawRect :, но не вызывать drawRect вручную, вместо этого используйте метод setNeedsDisplay.

Другие способы контекст может умереть, называя UIGrhicsPushContext()

Я думаю, что после того, как определить, где это недействительности, вы будете иметь ключ.

 Смежные вопросы

  • Нет связанных вопросов^_^