在node的clipping测试里,使用的是一个三角形作为stencil,没有问题。
但是如果使用一个圆形的DrawNode作stencil,那么结果就是clippingNode仍然显示完整的内容,没有被圆形剪切。
这个问题不知道是bug还是对于圆形需要额外的设置?
希望能回答下。
在node的clipping测试里,使用的是一个三角形作为stencil,没有问题。
但是如果使用一个圆形的DrawNode作stencil,那么结果就是clippingNode仍然显示完整的内容,没有被圆形剪切。
这个问题不知道是bug还是对于圆形需要额外的设置?
希望能回答下。
我用的cocos2dx3.2也发现这个问题了,使用DrawNode画圆形设置为模板,结果还是方形裁剪!!
不要使用drawCircle画出来会是一个空心圆。要使用drawSolidCircle。
void HelloWorld::initClippingNode()
{
Size visibleSize = Director::getInstance()->getVisibleSize();
auto clip=ClippingNode::create();
clip->setInverted(true);
clip->setAlphaThreshold(0.0f);
this->addChild(clip);
auto back=LayerColor::create(Color4B(0,0,0,200));
clip->addChild(back);
auto front=DrawNode::create();
Color4F yellow = {1, 1, 0, 1};
// front->drawCircle(Vec2::ZERO, 30, CC_DEGREES_TO_RADIANS(90), 50, false, yellow);
front->drawSolidCircle(Vec2::ZERO, 30, CC_DEGREES_TO_RADIANS(90), 50, yellow);
front->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
clip->setStencil(front);
}
```
我用的是cocos2dx3.2 ,DrawNode类里面没有drawSolidCircle这个方法啊。
我用的是cocos2dx3.2 ,DrawNode类里面没有drawSolidCircle这个方法啊。
我用的是drawDot() , 看test里面确实画出来的也是一个实心圆,但是用作模板就无效。
谢谢回复。有时间再试试。已经改用其他的方式解决原先的问题了。
改用图片吧,否则你那个圆画出来锯齿也一塌糊涂。
嗯。drawnode比较耗性能。segments指定了圆分段数。
DrawNode* pDNode = DrawNode::create();
pDNode->drawSolidRect(Vec2::ZERO, Vec2(ptCentre.x + 10, ptCentre.y + 10), Color4F(1,0,0,1));
pDNode->setPosition(ptCentre);
m_pPetEnergyStencil = ClippingNode::create(pDNode);
Sprite* pSprite = Sprite::create( "petEnergy_Bottom.png" );
m_pPetEnergyStencil->addChild(pSprite);
GetBattleScene()->addChild(m_pPetEnergyStencil,2000);
// m_pPetEnergyCtrlBottom->setAnimation(0, “petEnergy”, true);
m_pPetEnergyStencil->setInverted(true);
m_pPetEnergyStencil->setAlphaThreshold(0.0f);
m_pPetEnergyStencil->setPosition(ptCentre);
版主,知道,我这个哪里写错了吗?为何完全遮不住,一点效果都没有