序列插入/删除/重新排序的动画

时间:2014-04-30 14:18:49

标签: famo.us

上面是否有任何建议的模式?

我目前的想法是,在更新序列数组之前:

  1. setTransform with Translate + curve to“滑动”节点到新位置
  2. 完成后,翻译回0,0并更新阵列
  3. 当然,上述逻辑的很多工作方式取决于View,例如: Scrollview与GridLayout。同样,其他动画也可能是相关的。

    所以我想我也想知道是否:

    1. 每个开发者都应该自己做这个
    2. 社区应该创建处理此
    3. 的包装视图
    4. 这是Famo.us将来会提供的任何东西(我加入了晚会,所以他们的所有计划都不清楚。)

1 个答案:

答案 0 :(得分:2)

目前很少有建议的模式,因为Famo.us对大多数社区来说仍然是新手。你不是那么晚!对于你想知道的要点..#2'社区应该创建处理这个问题的包装视图',这是长期的答案。然而,尽管它是新的,但社区没有确定的位置来共享示例和小部件。您可能需要自己尝试一下,并意识到Famo.us提供的功能仍然是一个很好的起点。

话虽如此。以GridLayout为例。 GridLayout布局后..它包含属性_modifiers下的一个Modifiers数组。您可以将这些修改器用作其他对象捕捉到的控制点。这样你就不会将你的单元格嵌入到GridLayout中,而是使用GridLayout来管理你的绝对单元格位置。

因此,要获得第一个网格单元的中心,您可以执行以下操作:

var modifier = grid._modifiers[0];

var translate = Transform.interpret(modifier.getTransform())['translate'];
var size = modifier.getSize();
var center = [translate[0] + Math.round(size[0] / 2.0),translate[1] + Math.round(size[1] / 2.0),0];

请注意,_modifiers将无法立即使用..如果此代码不在事件中或在加载GridLayout后执行,则_modifiers将是未定义的。当我遇到这种情况时,我最终会像这样进行子类化..

Surface render events in famo.us

或者只是要求引擎检查属性并在完成后删除侦听器

var check_modifiers = function(){
    if (grid._modifiers){
        // Do Something
        Engine.removeListener('prerender',check_modifiers);
    }
}

Engine.on('prerender',check_modifiers);

希望这足以让你开始..欢迎来到Famo.us