【发布时间】:2015-09-12 05:14:26
【问题描述】:
我正在 Angular SPA 中构建一系列 Web 应用程序。这些应用程序中的每一个都位于一个 Angular 模板中,它们之间的导航会剥离和替换适当的 DOM 元素并从控制器运行脚本。
我的问题更笼统:在离开 Three.js 场景并返回时,显然 DOM 元素和脚本本身会重新运行,从而导致场景从“scratch”开始。有没有办法让场景在后台运行,以便用户可以导航回应用程序并让它就在他们离开的地方?
这甚至是可取的吗?我知道当用户导航到另一个选项卡时 requestAnimationFrame 方法会停止动画,但这在 Angular 上下文中如何工作?
例如,here's the WIP web page。尝试离开 StarFinder 选项卡然后返回,您就会明白我的意思了。
编辑:Here's a JSFiddle 来说明我的意思(在这种情况下,它会在没有 Angular 的情况下修改 DOM)。
真的,有问题的是渲染器,它会在返回时重新启动:
function render() {
requestAnimationFrame(render);
cube.rotation.x += 0.01;
cube.rotation.y += 0.01;
renderer.render(scene, camera);
}
render();
【问题讨论】:
-
请在此处添加有意义的代码和问题描述。不要只链接到需要修复的站点 - 否则,一旦问题得到解决,这个问题将对未来的访问者失去任何价值。发布 Short, Self Contained, Correct Example (SSCCE) 来证明您的问题将帮助您获得更好的答案。有关详细信息,请参阅 Something on my web site doesn't work. Can I just paste a link to it? 谢谢!
-
@Cerbrus 链接的站点不是“需要修复”的站点,这个问题比基于特定代码的问题更笼统/理论上。你想让我怎么做?
-
当您解决问题时,您问题中的链接将失去其价值,因此它对未来的访问者没有帮助。你能就这个问题发表一个 SSCCE 吗?
-
@Cerbrus Point 已采取,但由于问题的性质,任何示例都不会很简单。我将在 JSFiddle 中组合一个。
-
@Cerbrus 我已经用 JSFiddle 更新了原始问题。
标签: javascript jquery angularjs canvas three.js