1

如何在 cocos2d 1.1 中将 z-index 设置为 ccDrawPoly() 以将其绘制在场景中的所有 CCSprite(s) 之上?

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

}
4

2 回答 2

5

有几种方法可以做到这一点。假设 draw 方法在您自己的 CCNode 子类中被覆盖,则:

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

如果在包含子精灵的类中重写了 draw 方法,则应该重写 visit 方法。然后在运行自定义绘制多边形代码之前首先调用[超级访问]:

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

    // draw custom code on top of node and its children
    ccDrawPoly( … );
}
于 2012-10-08T14:19:12.400 回答
3

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

于 2012-10-08T12:04:10.217 回答