gpt4 book ai didi

c++ - 无法更改 Cocos2d-x MenuItemToggle 元素的不透明度

转载 作者:行者123 更新时间:2023-11-30 05:38:27 24 4
gpt4 key购买 nike

我正在尝试确定为什么不透明度不影响 CCMenuItemToggle 项目?直接在对象上调用 setOpacity() 以及调用 FadeTo() 等操作或降低其父级的不透明度时都是如此。

我已经使用 Cocos2dx v2.2.6 和 v3.8.1 对此进行了测试,两者都相同。

auto item1 = MenuItemToggle::createWithCallback(CC_CALLBACK_1(HelloWorld::menuCallback, this),
MenuItemImage::create("CloseNormal.png", "CloseNormal.png"),
MenuItemImage::create("CloseSelected.png", "CloseSelected.png"),
nullptr);

// create menu, it's an autorelease object
auto menu = Menu::create(item1, NULL);
menu->setPosition(256, 256);
this->addChild(menu, 1);

// Nothing I do to try and make 'item1' set to 0% opacity works. It is always 100% opaque.
menu->setCascadeOpacityEnabled(true);
menu->setOpacity(0.0);
item1->setOpacity(0.0);
item1->getParent()->setCascadeOpacityEnabled(true);

最佳答案

经过进一步分析,我发现需要在 MenuItemToggle 本身上调用 setCascadeOpacityEnabled(true) 才能使其受不透明度影响(包括通过父菜单容器设置不透明度时)。这种行为偏离了其他 CCMenuItem 类,让我失望了。

为了减少在每个切换项上调用 SetCascadeOpacityEnabled(true) 的需要,可以选择在主 CCMenuItem::initWithTarget 构造函数中设置选项。即,

bool CCMenuItem::initWithTarget(CCObject *rec, SEL_MenuHandler selector)
{
setAnchorPoint(ccp(0.5f, 0.5f));
m_pListener = rec;
m_pfnSelector = selector;
m_bEnabled = true;
m_bSelected = false;

// Make sure opacity and color values cascade to children
this->setCascadeColorEnabled(true);
this->setCascadeOpacityEnabled(true);

return true;
}

关于c++ - 无法更改 Cocos2d-x MenuItemToggle 元素的不透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32773287/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com