帧状态组件可以跨场景跟踪状态吗?

Can aframe-state-component track state across scenes?

我有一个(angular 基于 5 的)a-frame 应用程序,它有两个场景。我想使用 aframe-state-component 组件跟踪应用程序状态,例如配置参数。我想访问两个场景的累积状态。然而,根据经验,似乎每次我切换到另一个场景时,状态中的所有变量都会重置为初始状态。

此外,您可以使用如下语句访问状态变量:

AFRAME.scenes[0].systems.state.state.score

向我建议状态仅与一个场景相关(场景[0] 等于当前场景)。

起初我认为这是一个 angular 问题,因为我初始化状态的假定单例服务在每次场景传输时都被初始化。但我发现使用 angular 路由器进行链接:

this.router.navigate([(evt.target as any).previousSibling.getAttribute('link').href, {}])

而不是默认值:

window.location = this.data.href

已解决该问题。所以现在看来​​是 A 型框架的问题。

这个组件只能用于场景内而不是场景间的想法是否正确?

注意:我也在试验 angular-redux/store,它似乎没有问题,但我宁愿使用 aframe-state-component 因为它看起来更简单。

状态组件似乎不存储状态,因此如果您在一页上有两个场景,它会起作用:

<a-scene></a-scene> 
<a-scene visible="false"></a-scene>

并通过设置 visible 属性来切换它们。我还显示 AFRAME.scenes 指的是页面上的场景,因为您可以在上面 "example" (或 this fiddle).

您可以存储在 localStorage 中并在加载时恢复。类似于:

window.addEventListener('beforeunload', () => {
  localStorage.setItem('state', JSON.parse(state));
});

initialState: localStorage.getItem('state') 
  ? JSON.parse(localStorage.getItem('state'))
  : {
  // Initial state...
}

编辑:意识到您的意思是应用内场景更改?你可以做类似的事情。当一个场景被卸载时,将它存储在某个地方,然后状态组件检查它是否存在?