首页 > 解决方案 > aframe-state-component 可以跨场景跟踪状态吗?

问题描述

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

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

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,因为它看起来更简单。

标签: aframe

解决方案


您可以存储在 localStorage 中并在加载时恢复。就像是:

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

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

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


推荐阅读