关于改变graphics透明度的问题

问题:用graphics绘制的图形或线条不随节点透明度发生改变

  1. 节点树:

  2. graphics节点挂在脚本代码:
    ` onLoad: function () {

     this.node.cascadeOpacity = true;
     this.graphics = this.getComponent(cc.Graphics);
     this.graphics.moveTo(0, 0);
     this.graphics.fillRect(0, 0, 100, 100);
     
     this.scheduleOnce(() => {
         let action = cc.fadeOut(0.2);
         this.node.runAction(action);
         cc.log("kk")
     }, 1)
    

    },`
    三. 效果:
    渐隐前:

    渐隐后:

可以看到子节点已经随父节点渐隐掉,然而通过graphics组件绘制的矩形并没有发生变化
为什么呢,有人知道么,找到解决办法了吗

想过通过改变绘制颜色透明度去不断绘制,但是如果绘制的线或矩形很多,会不会对性能有影响(待验证):5::5::5:(T_T)

1赞

@jjyinkailejj

你测试的是 web 还是模拟器?

web和模拟器都是这样,creator是1.3.1 beta1和1.3.3正式版都有测过,效果一样:5:

子龙大大 有空帮看下

graphics 目前应该是不支持 透明度设置的 @jjyinkailejj 帮你@ youyou 老师了

好的 灰常感谢:2:

最新版本1.6版貌似还没解决?

這個解決了嘛? 今天1.82也遇到了

Node.color.setA(200)

試了。沒用
setA
或者
node.color = cc.color(…,…,…,0);
都沒有用。

查了源代碼。透明通道也不可能有作用

至今没解决这问题 从1.3到1.9 不知道2,0 怎么样?

不知不觉,一年半过去了:slightly_smiling:

可以给graphics组件节点一个父节点吗 然后改变父节点的透明度 我没试过 提个想法

理論上不行。

这个组件本来就不适合这么干,动态添加的定点不好改颜色。
非要这么干,继承组件

  • 重写所有的绘制接口,把每个顶点的颜色索引记录下来。
  • 重写setcolor接口,根据索引所以去修改定点的顶点色

怎麼會不適合,graphics屬於節點的圖形,被影響才是對的
egret, laya, flash,原本的Sprite上graphics就是可以被Sprite透明度影響的。
做不到。是引擎不給力。

1赞

graphics 不支持贴图填充 ,还不支持透明度 ,引擎应该重视啊

2赞

我也觉得应该要被node的透明度影响才对…

2赞

我也觉得应该要被node的透明度影响才对…