什么是了解所有表面最初在famo.us中渲染的好方法?

时间:2014-12-28 22:14:12

标签: famo.us

我希望能够知道所有视图何时在布局中呈现。我想这样做的原因是因为我需要能够在布局中引用渲染视图的位置,以便我可以相对于已经渲染的其他视图设置视图动画。

我读过这个: Surface render events in famo.us

我能想到的一种方法是计算已渲染的视图并在渲染完所有视图(基于已知计数)后,我可以假设所有视图都已渲染。显然,如果要呈现未知数量的视图,这将无效。

另一种实现此目的的方法是在所有托管表面完成渲染时使布局触发自定义事件。看起来这样做的好地方是在给定布局中的函数垫片中。例如,在SequentialLayout中,它将是SequentialLayout.prototype.commit。但是,我并不是100%肯定这是否是正确的方法,因为看起来EngineEntity管理渲染。所以,对我来说闻起来的是,这种方法实际上并不能解决我想要在合适的时间解雇的事件。

对此有什么最佳做法吗?

1 个答案:

答案 0 :(得分:0)

您的使用案例中最好的方法可能是在每个视图中监听每个表面上的部署(可渲染)

surface.on('deploy', function() {...});

并且一旦部署了所有曲面,就会向视图发出自定义事件

thisView._eventOutput.emit('completed-deploy', {data: someData});

然后,您可以收听每个视图以了解部署可渲染的时间

view.on('completed-deploy', function(data) {....});

虽然这确实考虑了可渲染部署到DOM的事实,但它不会让你知道它是否完成了修饰符的任何转换。在这种情况下,您还需要有一个函数来标记视图中转换完成的时间,如果这是您所需要的。