2012-10-08 82 views
1

如何在cocos2d 1.1中設置ccDrawPoly()的z-index來在場景中的所有CCSprite上面繪製這個?cocos2d ccDrawPoly通過CCSprite

-(void)draw 
{ 
    CGSize screenSize = [[CCDirector sharedDirector] winSize]; 
    glEnable(GL_LINE_SMOOTH); 
    glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); 
    glColor4ub(0, 0, 255, 255); 
    glLineWidth(2); 
    CGPoint vertices2[] = { ccp(0,0), ccp(0,screenSize.height*0.5), ccp(screenSize.width*0.5,screenSize.height*0.5), ccp(screenSize.width*0.5,0) }; 
    ccDrawPoly(vertices2, 4, YES); 

} 

回答

3

AFAIK,所有繪圖都是用零zOrder完成的。所以,如果你想讓你的精靈在手工繪製的東西下繪製,你可以添加你的精靈與負面的zOrder。例如,而不是使用addChild:方法,則可以使用addChild:z:,其中z值爲-1

+0

的z-index ccDrawPoly應大於3,在我的例子 –

+0

在這種情況下,創建圖層,繪製所有你想在這一層,添加此圖層與zOrder 3 – Morion

+0

沒有其他解決方案? –

5

有幾種方法可以實現這一點。假設拉伸方法是在自己的CCNode的子類,那麼覆蓋:

  • 結合z順序比任何精靈的Z次序
  • 添加drawPoly節點在一個單獨的層的厚度(或節點添加drawPoly節點)其繪製順序高於具有子畫面的圖層

如果繪圖方法在包含子圖的子類中被覆蓋,則應改爲覆蓋該訪問方法。然後運行自定義繪製聚代碼之前,首先調用[超級訪問]:

-(void) visit 
{ 
    // draw node and children first 
    [super visit]; 

    // draw custom code on top of node and its children 
    ccDrawPoly(…); 
} 
+0

非常感謝,我會嘗試 –

+0

此答案對我有幫助 – LilDwarf