cocos2d ccDrawPoly在CCSprite上

时间:2012-10-08 09:57:02

标签: cocos2d-iphone drawing z-index sprite

如何在cocos2d 1.1中设置z-index到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);

}

2 个答案:

答案 0 :(得分:5)

有几种方法可以实现这一目标。假设在您自己的CCNode子类中覆盖了draw方法,那么:

  • 添加drawPoly节点,其z顺序大于任何精灵的z顺序
  • 将drawPoly节点添加到单独的图层(或节点)中,其绘制顺序高于具有精灵的图层

如果在包含sprite作为子节点的类中重写draw方法,则应该覆盖visit方法。然后在运行自定义绘制多边形代码之前先调用[super visit]:

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

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

答案 1 :(得分:3)

AFAIK,所有绘图都是用零zOrder完成的。因此,如果您希望手动绘制您的精灵,您可以添加带有负zOrder的精灵。例如,您可以将addChild:与z值addChild:z:一起使用,而不是使用-1方法。