0

以上有什么建议的模式吗?

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

  1. 使用 Translate+curve 的 setTransform 将节点“滑动”到新位置
  2. 完成后,翻译回 0,0 并更新数组

当然,上述逻辑的大部分工作方式取决于视图,例如 Scrollview 与 GridLayout。同样,其他动画也可能是相关的。

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

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

1 回答 1

2

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

话虽如此。以 GridLayout 为例。在 GridLayout 布局之后.. 它包含属性 _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 将未定义。当我遇到这种情况时,我最终会像这样子类化。

famo.us 中的表面渲染事件

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

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

Engine.on('prerender',check_modifiers);

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

于 2014-04-30T14:56:59.937 回答