在封装达芬奇的时候,遇到了在一个函数里面 无法触发刷新 canvas 的问题 ,经过测试发现, canvas.flush只会针对已有的一处进行刷新。

    1. function drawFrame() {
    2. canvas.clear(CanvasKit.Color(255, 255, 255, 1.0));
    3. davinci.drawStarPath({ x, y });
    4. canvas.flush();
    5. }
    6. function drawStarPath(param) {
    7. // ...
    8. canvas.drawPath(path, paint);
    9. canvas.flush();
    10. }

    上述方法中,drawStarPath 中的 drawPath 方法是失效的。最后渲染出来的是白色画布。而注释掉 drawFrame 的 flush 后,就能显示星星。
    因此在封装上,无法直接将渲染集成进去,应该封装的是一个对象,将相应的参数灌进去,然后返回需要的对象。最后统一进行渲染。