clippingnode 原理

clippingnode继承自node,主要做了两件事,第一是设置模板的缓冲值(以stencil为参考),这些过程都在visit中完成。

通过onBeforeVisit函数:


clippingnode 原理_第1张图片

通过绘制一个全屏的矩形,将模板缓冲置为0,有一个问题是:不绘制具体的图形不能把模板缓冲置为0吗?


然后设置模板的绘制


然后进行具体的模板绘制,根据上面设置的条件,模板所有值都不会通过测试,然后模板缓冲会被置为模板的mask值


最后通过onAfterDrawStencil绘制clippingnode


这里有个迷惑的地方,为什么参考值不是mask_layer,而是_mask_layer_le,主要是clippingnode的孩子可能也是一个clippingnode



总结一下:

clippingnode的visit函数,先以模板为参考设置模板缓冲值,然后再根据设置绘制clippingnode

你可能感兴趣的:(clippingnode 原理)