如何在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);
}
答案 0 :(得分:5)
有几种方法可以实现这一目标。假设在您自己的CCNode子类中覆盖了draw方法,那么:
如果在包含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
方法。