不能改变Cocos2d-x MenuItemToggle元素的不透明度
Cannot change opacity of Cocos2d-x MenuItemToggle elements
我想确定为什么不透明度不影响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++映射不删除元素
- BST 不添加元素
- 如何从透明度计算不透明度?
- 关联容器,比较函数不是元素类型的一部分吗?
- std::矢量插入,不知道元素的类型
- stable_sort不遵守元素的顺序
- 尝试从成员函数推送时不维护元素的成员向量
- 将空元素添加到声明的容器中,而不声明元素的类型
- glcolor4f-绘制时无法获得完全不透明度
- 设置要与无序集合一起使用的自定义类 - 在集合中找不到元素
- VTK抽象选择器,用于不同不透明度值的多个参与者
- 在openFrameworks中,是否可以在使用ofxPiMapper时更改我的fbo源的不透明度
- 如何使用GDI 显示具有25%不透明度的PNG图像?(MFC)
- 在不破坏元素的情况下调整std::vector的大小
- 在变量之间移动队列而不复制元素
- VTK :如何将不透明度设置为同一演员的不同对象
- SDL_Texture不透明度
- 如何在GDI+中控制TextureBrush的不透明度
- 使用 STL 算法查找集合中的前两个不相邻元素
- 不能改变Cocos2d-x MenuItemToggle元素的不透明度