是否可以在famo.us中链接对齐和原点修饰符?

时间:2014-11-24 12:47:03

标签: famo.us

我正在修改对齐和原点值,以便在屏幕内外显示动画。但是,我还需要使用align和origin来定位其中一个视图中的曲面。当此曲面设置对齐和原点值时,似乎没有考虑在父视图上设置对齐和原点。任何人都知道如何构造渲染树以使对齐和原始值考虑父视图设置?

假设视图已对齐[1,0]并且原点[0,0](从屏幕向右推出)在此视图中有一个对齐[0.5,0.5]和原点[0.5,0.5]的表面(以观点为中心)。这显示了屏幕中心的表面,而我希望将它放在父视图的中心。

1 个答案:

答案 0 :(得分:1)

您可以链接修饰符,但请记住Modifiers与其Render Nodes是一对一的关系。对于两个不同的可渲染项使用相同的Modifier,无法实现目标。

在您的情况下,您将构建渲染树并将渲染节点链接到彼此。根RenderNode (View)可用于将链接的渲染节点转换为屏幕。

<强> Click Here for a working Example

让我们解释

根节点将是主视图的入口节点。

  var rootView = new View();
  var rootMod = new Modifier({
    size: [undefined, undefined],
    origin: [0, 0],
    align: [1, 0]
  });

创建一个关闭屏幕的View Node和一个要链接的启动View Node。

  var offView = new View();
  var offMod = new Modifier({
    size: [undefined, undefined],
    origin: [0, 0],
    align: [0, 0]
  });
  var off = new Surface({
    size: [undefined, undefined],
    properties: {
      backgroundColor: 'rgba(0,0,0,0.25)'
    }
  });

  var splashView = new View();
  var splash = new Surface({
    size: [200, 200],
    properties: {
      backgroundColor: 'rgba(255,0,0,0.25)'
    }
  });
  var splashMod = new Modifier({
    origin: [0.5, 0.5],
    align: [0.5, 0.5]
  });

现在将它们添加到各自的渲染节点。

  • 然后将屏幕外视图节点添加到根节点:
  rootView.add(offView);
  • 将启动View添加到关闭屏幕View
  offView.add(splashView);

现在您已准备好将Renderables及其Modifiers分别添加到每个渲染节点。

  offView.add(offMod).add(off);
  splashView.add(splashMod).add(splash);

  mainContext.add(rootMod).add(rootView);
  mainContext.add(root);