我试图在屏幕的上半部分使用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];
我错过了什么?
答案 0 :(得分:1)
我认为你应该添加
[super draw];
当你覆盖CCSprite的draw方法时,你的draw方法开始了。只有这样,子类化的CCSprite才会为其重写方法执行“精灵渲染”。