生命周期

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

数据变化的原始事件

ChildEvent.ADD

添加图形。

ChildEvent.REMOVE

移除图形。

AttrEvent.CHANGE

图形属性被修改。

RenderEvent.REQUEST

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

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

RenderEvent.START

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

LayoutEvent.REQUEST

请求布局。

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


LayoutEvent.START

开始本轮布局,layout.startlayout.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 实例监听所有事件。