目前建议的模式很少,因为 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