Stencil manager does not support level bigger than %d in this device.

see details. Arguments: 8
Error 9000, please go to https://github.com/cocos-creator/engine/blob/master/EngineErrorMap.md#9000 to see details. Arguments: 8
请问这是什么意思,出现的原因是什么?

看看是不是连续的子节点包含Mask总数太多,或者出现Mask预制体循环引用了

是不允许吗 那请问一下如果一张精灵图片需要多次遮罩要如何操作

可以考虑用 mask._graphics 去画区域

Error 9000, please go to https://github.com/cocos-creator/engine/blob/master/EngineErrorMap.md#900010 to see details. Arguments: 8
版本2.2.2还是有

Error 9000, please go to https://github.com/cocos-creator/engine/blob/master/EngineErrorMap.md#900010 to see details. Arguments: 8
版本2.2.2还是有,在一个页面使用同时使用5个以上的Mask,实例化prefab的时候有很大几率报这个错

和Mask数量无关,实例化带有mask的prefab,就有几率报这个错

这个问题太容易出现了,界面使用了ScrollView的prefab,实例化就会有几率出现这个错误

虽然描述很清晰,还是希望你可以提供个复现的demo,减少排查方法上出现奇异的情况。

web-mobile.zip (1.2 MB)


这是报错信息,zip文件中有 cocos2d-js-min.js 文件和min.js.map文件

你这边提供资源是压缩的引擎源码,没什么帮助啊!
从日志上面看,应该是材质被释放或者丢失,你可以自定义引擎,在错误的代码位置做下判断,调试看看这个对象是什么,再进一步分析材质丢失的原因。


MaskAssembler fillBuffers 中 applyClearMask mask 的_clearMaterial 是null,打印节点名字是我使用的ScrollView的Mask,这个是什么原因,如何修改

我把mask 的 _clearMaterial 为null的屏蔽了也不行,接下来的代码会报错

确认下Mask是属于哪个节点的,在跟踪下对应节点的Mask变化,可以自己调试跟踪下堆栈,添加些日志。

mask是ScrollView的下的,原因是MaskAssembler fillBuffers的时候先报了的错误,mask的_clearMaterial 和_enableMaterial是null,在接下来的代码中调用applyStencil的时候,调用material.effect就会报这个错

你再往下挖,是不是节点的mask没有初始化?

在 Mask _activateMaterial中报错了,错误信息闪的太快,没有看到,之后就有了Error 9000的错误

,这个地方的mat是null