关于改变graphics透明度的问题

这个是BUG,我们看看什么情况~

这个透明度的问题在1.9的时候有办法解决吗?现在因为这个透明度问题很难受!

现在有解决方案了吗?1.9版本,给指个方向

解决了吗?或者有没有什么可以代替的方案?继续解决啊

解决了吗

这个需要修改引擎,在引擎里加个透明度的参数,然后再加个jsb绑定~
之前改过,不过找不到了
试试自己修改一下~

以下修为1.x版本(2.x应该也差不多)
cocos/editor-support/creator/CCGraphicsNode.h
void setGraphicsOpacity(const float opacity) { _graphicsOpacity = opacity; } //增加一个这个,前提 是你定义一下变量 _graphicsOpacity
//float _graphicsOpacity;
//_graphicsOpacity初始化为255
//当然你也可以定义一下get 函数

在 cpp里
void GraphicsNode::onDraw(const Mat4 &transform, uint32_t flags)

if (cmd->nIndices) {
Color4F& color = cmd->color;
//program->setUniformLocationWith4f(colorLocation, color.r, color.g, color.b, color.a);//修改为下面的
program->setUniformLocationWith4f(colorLocation, color.r, color.g, color.b, color.a * _graphicsOpacity/255);
program->setUniformLocationWith1f(strokeMultLocation, cmd->strokeMult);

然后 绑定一下 setGraphicsOpacity 这个函数 就可以了

然后js里改变透明度时,调用一下这个函数就可以了~~

写的有点乱 。。。

1赞

2.1.2了,引擎组能关注一下这个问题吗。

貌似2.1.2依然没有解决这个问题,我也碰到同样问题。

2.2.0依旧没有解决这个问题,请问什么时候解决 @huanxinyin

目前暂不支持透明度修改,请知悉。

遇到什么困难了,2.4都还没支持?!

在改变node透明度的时候可以在update里刷新graphics的strokeColor或者fillColor中的a

@huanxinyin 有排期吗

你只改变颜色是不行的,改变后你还得重新fill或stoke,这两个方法里还会涉及一些计算,频繁的调用对性能有损耗

自己修改下effect,加一个透明属性,自己修改,比修改顶点属性还要好点

都2021年了,还是没有解决

graphics的透明度是由绘制颜色cc.color(255,255,255,0)的最后一个alpha值决定的

那问题来了,怎么渐变呢

渐变alpha值再进行清除重新绘制,实现层面肯定没问题,用tween就可以,性能不懂怎么样