【问题标题】:AFrame scene reload methodAFrame场景重载方法
【发布时间】:2019-05-21 04:34:54
【问题描述】:

我正在尝试在 AFrame 上重新加载场景,我有一个带有机器人的场景,当用户单击按钮时我需要加载回场景的原始状态。

我已经尝试过的是:

var sceneElement = document.querySelector("a-scene");
  sceneElement.reload();

还有:

location.reload()

第一个在浏览器控制台上引发错误,表明 reload() 方法不是函数,但 AFrame 上的文档支持它。不知道我用对了没有。

Uncaught TypeError: sceneElement.reload is not a function
    at HTMLDocument.eval (websim.js:64)
    at HTMLButtonElement.eval (editor.js:23)
    at HTMLButtonElement.dispatch (jquery.js:4953)
    at HTMLButtonElement.elemData.handle (jquery.js:4758)

下面的最后一个代码重新加载整个页面,这不是我需要的。

谢谢! :)

【问题讨论】:

    标签: aframe


    【解决方案1】:

    该方法不久前被删除,我只是推送了一个更改以将其从文档中删除,谢谢。

    你可以window.location.reload()

    否则,您可以手动恢复您需要恢复的任何内容(.setAttributes,删除组件)。 aframe-state-component 如果它更复杂并且您不想重新加载页面,也可以提供帮助。

    【讨论】:

    • 我可以用aframe-state-component在我的场景中设置机器人的旋转和位置吗?
    • 如果你想走那条路,我会定义一个初始状态变量,其中包含你想要重置的所有内容。 var initialState = {robotPosition: '0 0 0'}; 然后AFRAME.registerState({initialState: initialState, handlers: { reset: function (state) { Object.assign(state, initialState); } } })....然后将状态<a-entity robot bind__position="robotPosition" then just emit reset`绑定到场景。您还可以使用机器人组件通过事件侦听器为您执行此操作。
    【解决方案2】:

    我找到了解决问题的方法,我的机器人有dynamic-body 组件,所以我可以使用robot.body.quaternion.set 和robot.body.initQuaternion x、y 和z 作为输入参数并重新加载机器人。

    我知道没有重新加载完整的场景,但它适用于这个特定问题。

    感谢@ngokevin 的回答

    【讨论】:

      猜你喜欢
      • 2018-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多