LayerColor::create() 的坑爹操作

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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值