我有一个(基于角度5的)a-frame应用程序,它有两个场景。我想使用aframe-state-component组件跟踪应用程序状态,例如config parms。我想在两个场景中访问累积状态。然而,根据经验,似乎每次切换到另一个场景时,状态中的所有变量都将重置为其初始状态。
此外,您可以使用如下语句访问状态变量:
AFRAME.scenes[0].systems.state.state.score
向我建议状态仅与一个场景相关联(场景[0]等于当前场景)。
起初我认为这是一个角度问题,因为假定的单一服务我初始化状态正在每次场景转移时被初始化。但我发现使用角度路由器进行链接:
this.router.navigate([(evt.target as any).previousSibling.getAttribute('link').href, {}])
而不是默认值:
window.location = this.data.href
修正了这个问题。所以它现在似乎是A-frame的一个问题。
这个组件只能用于场景内而不是场景间是正确的假设吗?
注意:我还尝试使用angular-redux/store,并且在场景中保留状态似乎没有问题,但我宁愿使用 aframe-state-component 因为它看起来更简单。
答案 0 :(得分:3)
您可以存储在localStorage中并在加载时恢复。类似的东西:
window.addEventListener('beforeunload', () => {
localStorage.setItem('state', JSON.parse(state));
});
initialState: localStorage.getItem('state')
? JSON.parse(localStorage.getItem('state'))
: {
// Initial state...
}
编辑:意识到你的意思是应用内场景变化?你可以做类似的事情。卸载场景时,将其存储在某处,然后状态组件检查它是否存在?
答案 1 :(得分:0)
状态组件似乎不存储状态,因此如果您在一个页面上有两个场景,它将起作用:
<a-scene></a-scene>
<a-scene visible="false"></a-scene>
并通过设置visible
属性来切换它们。我还会显示AFRAME.scenes
引用页面上的场景,因为您可以在上面的“示例”(或this小提琴)中记录AFRAME.scenes[0]
和AFRAME.scenes[1]
。