2012-02-25 2 views
2

Так что я пытаюсь нарисовать простой прямоугольник в моей iOS-игре cocos2d, но он просто не появляется. Сначала я добавил свой код рисования прямоугольника в метод init init моей основной сцены, но он не появлялся, поэтому я огляделся.Рисование прямоугольника с Cocos2d

Я прочитал это http://www.cocos2d-iphone.org/forum/topic/655, и что я получил от него, должен был создать новый класс, расширить класс CCLayer и добавить его в мою основную сцену.

Это код моей основной сцены:

+(CCScene *) scene 
{ 
    // 'scene' is an autorelease object. 
    CCScene *scene = [CCScene node]; 

    // 'layer' is an autorelease object. 
    HelloWorldLayer *layer = [HelloWorldLayer node]; 
    RectLayer *rectLayer = [RectLayer node]; 
    // add layer as a child to scene 
    [scene addChild:rectLayer]; 
    [scene addChild: layer]; 

    // return the scene 
    return scene; 
} 

И это мой RectLayer.m код,

#import "RectLayer.h" 

@implementation RectLayer 

-(id) init { 
    if((self=[super init])) { 
     glEnable(GL_LINE_SMOOTH); 
     glColor4ub(255, 255, 255, 255); 
     glLineWidth(2); 
     CGPoint vertices2[] = { ccp(79,299), ccp(134,299), ccp(134,229), ccp(79,229) }; 
     ccDrawPoly(vertices2, 4, YES); 
    } 
} 
@end 

Теперь я получаю ошибку EXC_BAD_ACCESS при попытке открыть его с IPad тренажер.

Я недавно только что начал Objective-C, поэтому я не совсем уверен, что случилось.

Спасибо за любую помощь.

ответ

4

Поместите код рисования в методе draw:

- (void)draw 
{ 
    glEnable(GL_LINE_SMOOTH); 
    glColor4ub(255, 255, 255, 255); 
    glLineWidth(2); 
    CGPoint vertices2[] = { ccp(79,299), ccp(134,299), ccp(134,229), ccp(79,229) }; 
    ccDrawPoly(vertices2, 4, YES); 
} 
+0

И я бы положил это в RectLayer.m правильно? – Austin

+1

Также в коде главной сцены вы захотите добавить rectLayer после слоя, чтобы он появился сверху. – Letrstotheprez

+1

Да, это должен быть метод рисования RectLayer. Также см. Комментарий @Letrstotheprez. – sch

0

Вы также могли бы поставить этот код в методе Draw:

ccDrawSolidRect (CGPoint происхождения, CGPoint назначения, ccColor4F цвет);

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