cocos2dx DrawNode和ClippingRectangleNode 使用详解
auto s = Director::getInstance()->getWinSize();
auto layer = LayerGradient::create(Color4B(0,255,0,255), Color4B(255,255,0,255));
layer->setIgnoreAnchorPointForPosition(false);
layer->setPosition(Vec2(s.width/2, s.height/2));
this->addChild(layer);
auto draw = DrawNode::create();
addChild(draw, 20);
draw->setLineWidth(20);
draw->drawLine(Vec2(0,s.height/2.0), Vec2(s.width/2.0, s.height/2.0), Color4F(1.0, 1.0, 1.0, 1.0));
auto moveby = MoveBy::create(0.0, Vec2(-s.width/4.0, 0));
draw->runAction(moveby);
moveby = MoveBy::create(4.0, Vec2(s.width/4.0, 0));
draw->runAction(moveby);
{
auto draw1 = DrawNode::create();
addChild(draw1, 20);
draw1->setLineWidth(20);
draw1->drawLine(Vec2(s.width/2.0,s.height), Vec2(s.width, s.height), Color4F(1.0, 1.0, 1.0, 1.0));
auto moveby = MoveBy::create(4.0, Vec2(0, -s.height/2.0));
draw1->runAction(moveby);
}
{
auto clipper = ClippingRectangleNode::create();
clipper->setClippingRegion(Rect( -s.width/4.0, -s.height/2.0, s.width/2.0, s.height));//模板大小
this->addChild(clipper);
clipper->setAnchorPoint( Vec2(0.5, 0.5) );
clipper->setPosition(Vec2(s.width/2.0 + s.width/4.0, s.height/2.0 + s.height/2.0));
auto content = Sprite::create(s_back2);
content->setAnchorPoint( Vec2(0.5, 0.5) );
content->setPosition(0.0, 0.0);
clipper->addChild(content);//底板
auto moveby = MoveBy::create(5.0, Vec2(0, -s.height/2.0));
clipper->runAction(moveby);
}
{
auto clipper = ClippingRectangleNode::create();
clipper->setClippingRegion(Rect( -s.width/4.0, -s.height/4.0, s.width/2.0, s.height/2.0));//模板大小
this->addChild(clipper);
clipper->setAnchorPoint( Vec2(0.5, 0.5) );
clipper->setPosition(Vec2(s.width/2.0 - s.width/4.0, s.height/2.0 + s.height/4.0));
auto content = Sprite::create(s_back2);
content->setAnchorPoint( Vec2(0.5, 0.5) );
content->setPosition(0.0, 0.0);
clipper->addChild(content);//底板
auto moveby = MoveBy::create(2.0, Vec2(0, -s.height/4.0));
clipper->runAction(moveby);
auto delay = DelayTime::create(2.0);
moveby = MoveBy::create(5.0, Vec2(s.width/4.0, 0));
content->runAction(Sequence::create(delay, moveby, NULL));
}