aframe - 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,因为它看起来更简单。
解决方案
您可以存储在 localStorage 中并在加载时恢复。就像是:
window.addEventListener('beforeunload', () => {
localStorage.setItem('state', JSON.parse(state));
});
initialState: localStorage.getItem('state')
? JSON.parse(localStorage.getItem('state'))
: {
// Initial state...
}
编辑:意识到您的意思是应用内场景更改?你可以做类似的事情。卸载场景时,将其存储在某个地方,然后状态组件检查它是否存在?
推荐阅读
- .net - 使用 JSON API .Net Core 在元数据中添加总数
- javascript - 挣扎于jQuery延迟弹出表单
- python - BLE中根据锚节点查找目标节点的位置
- google-cloud-platform - 使用 Terraformer\Terraform 克隆 GCP 项目
- c# - 你怎么称呼这种类型的财产?
- php - SAML(PHP) 使用 onelogin 工具包
- html - HTML5 视频控件在页面加载时缩小
- android - Kotlin - 如何在映射和过滤时跳过异常条目
- android - 如何使用全选复选框选择包含复选框的列表视图的所有行
- r - 用上一行中的值替换特定值