场景中的帧间状态分量跟踪状态可以吗?

时间:2018-05-30 07:15:55

标签: aframe

我有一个(基于角度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 因为它看起来更简单。

2 个答案:

答案 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]