Cocos2d,iOS 7.1:CCLabelTTF隐藏了ccDrawLine

时间:2014-04-18 09:38:45

标签: ios objective-c cocos2d-iphone

我试图在屏幕的上半部分使用CCLabelTTF,同时使用ccDrawLine在下半部分画一条线。当应用程序启动时,标签为空,过了一段时间后,它会更新一些文本。在绘图方法中不断绘制线条:

- (void)draw {

    ccDrawColor4B(0, 255, 0, 0);
    glLineWidth(40.0f);
    ccDrawLine(ccp(0, 0), ccp(200, 200)); 
}

事情是,第二个标签用文本更新并实际显示某些内容,即使标签再次变空,该行也会消失并且不会再次绘制。我此刻没有使用任何背景,所以它没有隐藏它。我试着玩zOrders(即使标签和线条在屏幕的不同区域),但线条仍然消失。我甚至尝试使用init和draw方法创建一个CCSprite子类,并使用它来绘制线。这是我在这堂课中所拥有的:

@implementation DrawingSprite
- (id)init {
    if (self = [super init]) {

    }
    return self;
}

- (void)draw {

    ccDrawColor4B(0, 255, 0, 0); //Color of the line RGBA
    glLineWidth(40.0f); //Stroke width of the line
    ccDrawLine(ccp(0, 0), ccp(200, 200));
}
@end

以下是我添加到主图层的内容:

_topLabel = [CCLabelTTF labelWithString:@"" fontName:@"Helvetica" fontSize:24];
_topLabel.position = ccp(winSize.width/2, winSize.height - 100);
_topLabel.color = ccc3(255,255,255);
_topLabel.zOrder = -1;
[self addChild:_topLabel];

_drawingSprite = [DrawingSprite node];
_drawingSprite.zOrder = 10;
[self addChild:_drawingSprite];

我错过了什么?

1 个答案:

答案 0 :(得分:1)

我认为你应该添加

[super draw];

当你覆盖CCSprite的draw方法时,你的draw方法开始了。只有这样,子类化的CCSprite才会为其重写方法执行“精灵渲染”。