ClippingNode 讲解:
模板只用到它的形状,可以是Layer,Node,Sprite等,使用“形状模板对 底板进行裁剪”,显示从底板上裁剪下来的图片区域。
底板 :被clipping addChild()的东西就是底板
//模板只用到它的形状,本项目 模版是game_title.png 底板是game_title.png和spark.png
auto gameTitle=Sprite::create("res/game_title.png");
Size clipSize=gameTitle->getContentSize();
auto spark=Sprite::create("res/spark.png");
spark->setPosition(-clipSize.width,0);
//节点裁剪与遮罩
ClippingNode *clip=ClippingNode::create();
clip->setInverted(false);//显示剩余的还是被剪裁的 如果为true 时 ,不显示模板,剩余的
clip->setStencil(gameTitle);//设置模版
clip->setContentSize(clipSize);//设置clip 的实际大小
clip->setPosition(visibleSize/2);
clip->setAlphaThreshold(0);//为1时,表示全部绘制,包括透明区域。为0时,表示绘制透明度不为0的地方
//设置底板
clip->addChild(gameTitle,1);
clip->addChild(spark,2);
this->addChild(clip);
模板只用到它的形状,可以是Layer,Node,Sprite等,使用“形状模板对 底板进行裁剪”,显示从底板上裁剪下来的图片区域。
底板 :被clipping addChild()的东西就是底板
//模板只用到它的形状,本项目 模版是game_title.png 底板是game_title.png和spark.png
auto gameTitle=Sprite::create("res/game_title.png");
Size clipSize=gameTitle->getContentSize();
auto spark=Sprite::create("res/spark.png");
spark->setPosition(-clipSize.width,0);
//节点裁剪与遮罩
ClippingNode *clip=ClippingNode::create();
clip->setInverted(false);//显示剩余的还是被剪裁的 如果为true 时 ,不显示模板,剩余的
clip->setStencil(gameTitle);//设置模版
clip->setContentSize(clipSize);//设置clip 的实际大小
clip->setPosition(visibleSize/2);
clip->setAlphaThreshold(0);//为1时,表示全部绘制,包括透明区域。为0时,表示绘制透明度不为0的地方
//设置底板
clip->addChild(gameTitle,1);
clip->addChild(spark,2);
this->addChild(clip);