2011-05-30 40 views
4

現在我正試圖在Cocos2d中繪製一個多邊形,但是我需要它在背景上,我如何更改繪製的Z-index並使其成爲最優先級,以便我可以看到線條而不是被覆蓋背景?更改Cocos2d中繪製方法的z順序?

這裏是繪製方法:

我決定只讓它行,而不是多邊形,並調整它的寬度,但否則是一樣的...

-(void) draw { 
    glColor4f(1.0f, 0.0f, 0.0f, 1.0f); 
    glLineWidth(5.0f); 
    ccDrawLine(healthBar[0], healthBar[1]); 
} 
+0

我有同樣的問題:http://stackoverflow.com/questions/22288222/primitives-and-sprites-z-index-in-cocos2d-x-3-0-是不一致的,我不知道如何解決。 'reorderChhild'不是解決方案是嗎? – Narek 2014-03-09 21:27:23

回答

3

使用reorderChild功能的CCNode。並把你的矩形在背景

-(void) reorderChild:(CCNode *) child z:(int) zOrder  
+0

但我正在用'ccDrawPoly'製作我的矩形。這不是一個真正的對象...... – Dair 2011-05-30 16:57:30

+0

你如何繪製它? (where) – Andrew 2011-05-30 18:20:57

+0

@Andrew:在 - (void)繪製方法中。 – Dair 2011-05-30 18:28:45

0

在你應用程序委託,您需要修改您的GLView,以便啓用深度。然後,您應該可以修改您的平局呼叫的深度。在您的應用程序的委託,尋找這樣的事情:

EAGLView *glView = [EAGLView viewWithFrame:[window bounds] 
           pixelFormat:kEAGLColorFormatRGBA8 // kEAGLColorFormatRGBA8 
           depthFormat:0     // GL_DEPTH_COMPONENT16_OES 
        ]; 

更改0要麼GL_DEPTH_COMPONENT16_OESGL_DEPTH_COMPONENT24_OES

編輯:

我不熟悉使用OpenGL,但也許this page會幫助你。

+0

我很困惑,我需要做什麼:這位導演在哪裏? GL視圖在哪裏? ccDrawLine是一個CCNode(我不這麼認爲),我在哪裏更改其vertexZ屬性? – Dair 2011-05-30 04:31:01

+0

CCNode有reorderChild功能。 vertexZ不適用於這個 – Andrew 2011-05-30 08:32:27

+0

@Moshe:好吧,我仍然困惑:雖然我在哪裏更改draw方法的z-index值? – Dair 2011-05-30 22:26:55