有没有办法在 A-Frame 的设置中禁用 nosleep.js?

Is there a way of disabling nosleep.js at setup in A-Frame?

A-Frame 利用 nosleep.js 来防止手机休眠(它在后台播放一个小视频文件)。对于我的用例,我需要 A-Frame 来 not 激活 nosleep.js.

我可以通过修改 aframe.js 文件本身来禁用 nosleep.js(搜索 "USE_WAKELOCK" 并将其硬编码为 false),但如果可能的话,我更愿意在设置中以编程方式执行此操作.有什么办法吗?

wakelock 对象创建为 <a-scene> 属性(source code). Here 您可以查看实现。

进入 VR 模式时,它正在执行 wakelock.request(),而在退出时 - wakelock.release()。 有了对场景的引用,你可以调用这些方法:

var scene = document.querySelector("a-scene")
// scene.wakelock.release() / scene.wakelock.request() 

我会通过侦听 enter-vr 事件并在几毫秒延迟后释放唤醒锁来禁用它。

scene.addEventListener('enter-vr', function () { 
    setTimeout(e => {wakelock.release();}, 100) 
});


Fiddle 记录了对象。它只会在检测到移动设备时创建,您可以 select 设备工具栏 (chrome) / 响应式设计模式 (ff)