我有一个(角5)的a帧应用程序,有两个场景。我希望跟踪应用程序状态,例如使用帧-状态组件组件的配置parms。我想在两个场景中访问累积状态。然而,从经验上看,每次我切换到另一个场景时,状态中的所有变量都会被重置到它们的初始状态。
此外,您可以使用如下语句访问状态变量:
AFRAME.scenes[0].systems.state.state.score对我来说,状态只与一个场景联系在一起(场景与当前场景相同)。
起初,我认为这是一个角度问题,因为假设的单例服务,在每个场景传输时,我初始化的状态都是初始化的。但是我发现用角度路由器连接:
this.router.navigate([(evt.target as any).previousSibling.getAttribute('link').href, {}])而不是默认的:
window.location = this.data.href解决了那个问题。所以现在它似乎是一个A框架的问题。
这个组件只能用于场景内部而不是场景间的概念是正确的假设吗?
注意:我也在试验角余弦/存储,它似乎没有问题跨场景保留状态,但我宁愿使用aframe-状态组件,因为它看起来更简单。
发布于 2018-05-30 08:35:35
您可以存储在localStorage中,并在加载时恢复。类似于:
window.addEventListener('beforeunload', () => {
localStorage.setItem('state', JSON.parse(state));
});
initialState: localStorage.getItem('state')
? JSON.parse(localStorage.getItem('state'))
: {
// Initial state...
}编辑:意识到你打算在应用程序中改变场景吗?你也可以做类似的事。当场景卸载时,将其存储在某个地方,然后状态组件检查它是否存在?
发布于 2018-05-30 07:56:50
状态组件似乎不存储状态,因此,如果在一个页面上有两个场景,它就会工作:
<a-scene></a-scene>
<a-scene visible="false"></a-scene>并通过设置visible属性来切换它们。我还展示了AFRAME.scenes是指页面上的场景,因为您可以在上面的“示例”(或这 AFRAME.scenes[1] )中记录AFRAME.scenes[0]和AFRAME.scenes[1]。
https://stackoverflow.com/questions/50598545
复制相似问题