【问题标题】:Cocos2d, iOS 7.1: CCLabelTTF hides ccDrawLineCocos2d,iOS 7.1:CCLabelTTF 隐藏 ccDrawLine
【发布时间】:2014-04-18 20:02:42
【问题描述】:

我正在尝试在屏幕的上部使用 CCLabelTTF,同时使用 ccDrawLine 在下部绘制一条线。当应用程序启动时,标签是空的,一段时间后它会更新一些文本。这条线在 draw 方法中不断绘制,如下所示:

- (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];

我错过了什么?

【问题讨论】:

    标签: ios objective-c cocos2d-iphone


    【解决方案1】:

    我认为你应该添加

    [super draw];
    

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

    【讨论】:

    • 我试过了,但调用 [super draw] 似乎并没有改变任何东西。该线已绘制,但随着标签开始显示文本而消失。
    • 您可以发布实现,您在哪里更改标签内容?你有孩子依附于_drawingSprite吗?我在 Cocos2d v3.0 中实现了你的代码。当我通过CCLabelTTFsetString 方法在每次点击时更改标签文本时,它可以正常工作。没有[super draw];,它就无法工作
    • 好吧,这很奇怪。我实际上尝试从 _drawingSprite 中的 draw 方法再次调用 [super draw] 并且它确实有效。我想我对其他一些试验和错误感到困惑。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多