帧状态组件可以跨场景跟踪状态吗?
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...
}
编辑:意识到您的意思是应用内场景更改?你可以做类似的事情。当一个场景被卸载时,将它存储在某个地方,然后状态组件检查它是否存在?
我有一个(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...
}
编辑:意识到您的意思是应用内场景更改?你可以做类似的事情。当一个场景被卸载时,将它存储在某个地方,然后状态组件检查它是否存在?