2014-04-18 70 views
0

我想在屏幕的上半部分使用CCLabelTTF,同時使用ccDrawLine在下半部分繪製一條線。當應用程序啓動時,標籤是空的,過一段時間後,它會更新一些文本。該生產線正在不斷繪製在抽籤方式類似:Cocos2d,iOS 7.1: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

我想你應該添加

[super draw]; 

ATT您的抽獎方法的begiining當你重寫CCSprite的繪製方法。只有當子類CCSprite爲其覆蓋的方法執行「精靈渲染」。

+0

我嘗試過,但調用[超級繪畫]似乎沒有改變任何東西。該線被繪製,但隨着標籤開始顯示文本而消失。 –

+0

您可以發佈實施嗎?在哪裏更改標籤內容?你有沒有附屬於_drawingSprite的孩子?我在Cocos2d v3.0中實現了你的代碼。當我通過'CCLabelTTF'的setString'方法每次點擊改變標籤的文本時,它都可以正常工作。沒有'[超級抽獎];' – pmpod

+0

好了,那很奇怪。我實際上已經嘗試從_drawingSprite中的draw方法再次調用[super draw],並且它確實有效。我想我對我的一些其他試驗和錯誤感到困惑。謝謝! –