0

我正在创建许多小表面,这些表面被添加到布局中(在这种情况下是页眉页脚布局),动画,然后需要消失。但是,我不确定添加后如何删除表面?

4

2 回答 2

5

Kraig 在可能的情况下使用 RenderController 是正确的,但我不建议您使用它。RenderController 适用于大型布局,但不适用于小粒子等。RenderController 一次只显示一个视图。

我在 IRC 频道上询问过这个问题,结果证明我这样做的方式,感觉真的很hacky,但仍然是推荐的最直接的方法。这个想法是重新定义渲染函数以返回 null。

// surface to remove
surface.render = function(){ return null; }

而已!

只要确保你也删除了代码中的所有引用!

我经常从一个对象做它..

delete littleSurfaces['little-surface-key']

FWIW 更高级的方法是实际定义一个视图,该视图专门控制要渲染的表面。为此,您可以在自定义视图上定义渲染函数,该视图返回所谓的 renderSpec。renderSpec 是定义将被渲染的表面的哈希列表。大家指向的例子就是 Flipper 类。看看鳍状肢渲染功能..

https://github.com/Famous/views/blob/master/Flipper.js

祝你好运!

于 2014-05-13T14:26:19.480 回答
0

您可以使用RenderController对象添加/删除表面。您还可以在显示和隐藏事物时应用可选的过渡。

DOM 有时可能会欺骗您,因为 Famo.us 会重新利用和回收 DOM 元素以提高效率。

https://famo.us/docs/api/latest/views/RenderController

于 2014-05-13T11:35:46.333 回答