同时显示/隐藏多个曲面的最佳做法是什么?我是否将所有曲面分组在一个渲染控制器下?或者,每个曲面都有一个分配给它的渲染控制器吗?
我目前正在做后者,但是在尝试触发后续转换时遇到了明显的困难。这对我来说很难,因为我的实现并没有提供所有表面被隐藏的明确指示。它更难,因为隐藏转换是以有限的随机时间间隔(在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();
}
}
答案 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
选项。