生命周期

从图形创建到完成渲染的整个生命周期, 执行顺序如下:

数据变化的原始事件

ChildEvent.ADD

添加图形。

ChildEvent.REMOVE

移除图形。

AttrEvent.CHANGE

图形属性被修改。

RenderEvent.REQUEST

观察者接收数据变化事件,并发送 render.request 事件通知更新渲染。

渲染器接收 render.request 事件, 调用 window.requestAnimationFrame 等待开始渲染。

RenderEvent.START

开始本轮渲染,render.start 与 render.end 间可以进行多次渲染。

LayoutEvent.REQUEST

请求布局。

布局器接收 layout.request 事件,准备开始布局。


LayoutEvent.START

开始本轮布局,layout.start 与 layout.end 间可以进行多次布局。

WatchEvent.REQUEST

请求观察数据用于布局。

观察者接收 watch.request 事件,并发送数据。

WatchEvent.DATA

接收观察数据。

LayoutEvent.BEFORE_ONCE

单次布局前。

计算出所有更新图形布局前的 bounds。

LayoutEvent.ONCE

单次布局中,实际已经布局好了。

计算出所有更新图形布局后的 bounds,得到需要重新渲染的 bounds。

LayoutEvent.AFTER_ONCE

单次布局后, 可以再调用 LayoutEvent.AGAIN 进行多次补充布局。

LayoutEvent.LAYOUT

本轮布局中。

LayoutEvent.END

完成本轮布局。


RenderEvent.BEFORE_ONCE

单次渲染前。

RenderEvent.ONCE

单次渲染中,实际已经渲染好了。

RenderEvent.AFTER_ONCE

单次渲染后, 可以再调用 RenderEvent.AGAIN 进行多次补充渲染。

RenderEvent.RENDER

本轮渲染中。

RenderEvent.END

完成本轮渲染。

可以通过 Leafer 实例监听所有事件。