//获取屏幕大小
auto s = Director::getInstance()->getWinSize();
//创建一个有颜色的layer,如果添加的子结点超出了颜色的范围,这个子结点依然是可以看见的,所以可以理解为这个layer是有无限大的,然后部分被涂色了。
//Color4B(0-255,0-255,0-255,0-255);
auto layerColor = LayerColor::create(Color4B(125, 200, 200, 255), 300, 300);
layerColor->setAnchorPoint(Vec2(0.5, 0.5));
layerColor->setPosition(Vec2(s.width / 2, s.height / 2));
addChild(layerColor);
//创建一个普通的layer,这个layer无限大,但是不能给这个layer设置颜色
auto layerNormal = Layer::create();
layerNormal->setAnchorPoint(Vec2(0, 0));
layerNormal->setPosition(Vec2(50, 50));
layerNormal->setContentSize(Size(50,50));
layerNormal->setColor(Color3B(200, 200, 200));
// layerNormal->addChild(Sprite::create("card_bg_big_2.jpg"));
layerColor->addChild(layerNormal, -1);
// layerColor->addChild(Sprite::create("card_bg_big_2.jpg"));
//创建一个背景颜色渐变的layer
auto layerGradient = LayerGradient::create(Color4B(200, 200, 200, 200), Color4B(100, 100, 100, 100), Vec2(0.9, 0.8));
addChild(layerGradient);
注:
因为Layer比较特殊,它默认忽略锚点,所以要调用ignoreAnchorPointForPosition()
接口来改变锚点,关于ignoreAnchorPointForPosition()
接口的使用说明,我们将在后面详细讲解。
auto green = LayerColor::create(Color4B(100, 255, 100, 128), visibleSize.width/4, visibleSize.height/4);
green->ignoreAnchorPointForPosition(false);
green->setAnchorPoint(Point(1, 1));
red->addChild(green);