使用RenderControllers隐藏/显示多个曲面的最佳方法

时间:2014-12-10 05:34:42

标签: javascript famo.us surface

同时显示/隐藏多个曲面的最佳做法是什么?我是否将所有曲面分组在一个渲染控制器下?或者,每个曲面都有一个分配给它的渲染控制器吗?

我目前正在做后者,但是在尝试触发后续转换时遇到了明显的困难。这对我来说很难,因为我的实现并没有提供所有表面被隐藏的明确指示。它更难,因为隐藏转换是以有限的随机时间间隔(在200到2000毫秒之间)触发的。

任何解决方案?代码如下:

for (var i = 0; i < surfaces.length; i += 1) {
  var surface = surfaces[i][0];
  var renderController = surfaces[i][1];

  if (s.id !== clickedSurface.id) {
    var fn = (function (s, rc) { 
      return function () { Timer.setTimeout(function () {rc.hide()}, getRandomArbitrary(200,2000)); };
    })(surface, renderController);

    s.colored ? Timer.setTimeout(fn, 2500) : fn();
  }

}

1 个答案:

答案 0 :(得分:2)

如果你想遍历表面并一次隐藏一个表面,你可以做类似下面的代码演示。

<强> Example jsBin Here

  function _hideNext(index) {
    if (index === surfaces.length) {
      //do something final, now complete
      _showNext(0);
    } else {
      var rc = surfaces[index][1];
      var surface = surfaces[index][0];
      var nextIndex = index + 1;
      rc.hide(surface, _hideNext.bind(this, nextIndex));
    }
  }

  _hideNext(0);

只需根据需要更改RenderController选项。