LayerColor::create() 的坑爹操作
😇 😇 😇 😇 😇
诡异的LayerColor::create()
- 使用无参create函数创建的LayerColor不显示
- setColor/setContentSize了也看不见!
- 去看了代码,测试一番才找到问题所在
原来
- LayerColor::create() 会导致
- 默认不透明度为0 !
- 需要手动设置不透明度
- node_1->setOpacity(255);
/** .
* Creates a fullscreen black layer
创建全屏黑色层
*/
static LayerColor* create();
bool LayerColor::init()
{
Size s = Director::getInstance()->getWinSize();
// 头文件说:创建全屏黑色层
// - 这里呢?不透明度为0
// - 导致创建的层不可见
return initWithColor(Color4B(0,0,0,0), s.width, s.height);
}
bool LayerColor::initWithColor(const Color4B& color, float w, float h)
{
if (Layer::init())
{
// default blend function
_blendFunc = BlendFunc::ALPHA_NON_PREMULTIPLIED;
_displayedColor.r = _realColor.r = color.r;
_displayedColor.g = _realColor.g = color.g;
_displayedColor.b = _realColor.b = color.b;
_displayedOpacity = _realOpacity = color.a;//不透明度为0,导致创建的层不可见
案例
//无参create
LayerColor* node_1=LayerColor::create();
node_1->setIgnoreAnchorPointForPosition(false);
node_1->setAnchorPoint(ANCHOR_LB);
node_1->setContentSize(Size(200.000000f,200.000000f));
node_1->setColor(Color3B(255,255,0));
node_1->setOpacity(255);//必须
node_0->addChild(node_1);
//create 指定颜色/尺寸
auto item=LayerColor::create(color,s.width,s.height);
item->setIgnoreAnchorPointForPosition(false);
item->setAnchorPoint(ANCHOR_LB);
item->setOpacity(160);
本文揭示了使用LayerColor::create()创建层时遇到的显示问题。由于默认不透明度被设为0,即使设置了颜色和尺寸,创建的层仍然不可见。解决此问题的方法是在创建后手动设置不透明度。
7578

被折叠的 条评论
为什么被折叠?



