使用的是Cocos2d-x 3.3的关于透明度的问题。以下问题都是可以正常设置setOpacity()的值
使用Cocos2d-x 如果修改了父级的透明度。发现子级调用setOpacity()的值要是比父级的opacity大是无效的
致使无法设置比父级大的透明度。
通过不过查看源码得出的结果是会根据一个父级的透明度去计算这个opacity的值。
void Node::updateCascadeOpacity()
{
GLubyte parentOpacity = 255;
if (_parent != nullptr && _parent->isCascadeOpacityEnabled())
{
parentOpacity = _parent->getDisplayedOpacity();
}
updateDisplayedOpacity(parentOpacity);
}
所以就导致了我设置比他大的就会无效。不过我们可以通过disableCascadeOpacity和updateDisplayedOpacity来修改达到可以设置比父级大的opacity。
我发现一个问题就是调用disableCascadeOpacity()的时候会比之前要亮。我查了我的代码和美术编辑的美术资源opacity的值都是100% 这是一个很奇怪的问题。如果有人知道原理请告知。
所以我会使用updateDisplayedOpacity(202)来设置一个值。来达到跟之前的透明度差不多一样的值。大家又更好的。请留言。
网友评论