cocos2d-x 3.15版本 ClippingNode 在ios和android嵌套的问题,不能正常显示(结帖)

其实这个问题很早版本(2.x版本就有了)就出现了,不知道是技术问题还是什么,官方尽管修复了很多次,但是嵌套这个问题貌似一直都没有解决,例如ClippingNode和ProgressTimer的嵌套,有没有什么解决方法,或者替代办法。电脑端是正常的,到了移动端全部显示有问题,不能够正确表达原本的内容。

为了制作出一个具有动态效果的进度条,还是啃了这个坑两天,终于做到全平台适用的方案。首先嵌套这种虽然可以在pc端但是我查询网络上的方案和自己研究了一下相关源代码,估计可用性不大。只有又尝试了多种替换方案,最终选择得到一个比较好的,就是通过RenderTexture先将一个纹理拿出来作为静态的,然后加入另一个裁剪类型的Node中,当然这个过程里面坑还比较多,不然我也不用研究这么久,另外这个类中有个setVirtualViewPort函数,额,说实在的我没搞懂这个东西的原理,里面调用了glViewport作为截选纹理函数,但是我尝试了很多参数和不同类型的值,诸如网上有些人反应,根本达不到效果嘛,而且这部分官方文档给的很稀缺,基本只是做了字面翻译和解释。不过我最终还是通过这个方式达到了效果,不过现在还有个问题就是效率,这个也是以后要考虑的。

我也嵌套过做过 并没有遇到什么问题啊 是不是你做的有问题呢?
我的是3.10
另外,凡是有遮罩的如果renderTexture.visit 到图片上会出现绿色倒是存在的 但是应该不是你说的一回事
貌似没有你这个问题。。

版本我是3.15不过应该不会有多少差别,做法我是把clippingnode中stencil添加了一个progresstimer并且实时更新进度条,然后再在clippingnode中addchild几个动态的node,就是不停的运动,然后pc端正常,但是移动端全部躺枪,你可以试一试我说的这个,应该是必出的bug

我自己写的LIST组件 就是这样的 并没有问题呢

你们的遮罩层,就是模板是静态的,就是作为stencil这个对象的node是静态的没有变化所以就不存在这个问题,我说的是stencil也是动态变化的,而且不是简单的放大或者缩小,应该是类似也有截取纹理显示的类型,比如clippingnode或者progresstimer这种类型,并且赋予变化,就会出现问题了,这个我可能之前没讲明白,正常可能只需要scrollview和clippingnode结合,而scrollview只是作为基本节点,也就是用来显示的,而不是作为模板stencil用来控制显示内容,我 做的progresstimer是用来控制当前显示的内容,所以表现不同,引发的问题也就不同