我有以下代码检查用户是否可以使用陀螺仪进行交互。我通过以下方式执行此操作:
function check_user_hardware(){
window.addEventListener("devicemotion", function(event){
if(event.rotationRate.alpha || event.rotationRate.beta || event.rotationRate.gamma){
if (!gyroscope) {
gyroscope = true;
current_interaction_mode = 'gyroscope_option';
set_user_ui_elements();
}
}else{
followMouse = true;
current_interaction_mode = 'followMouse_option';
console.log("checked for motion");
set_user_ui_elements();
window.addEventListener('mousemove', get_user_mouse_pos);
}
calculate_rotation_mesh_pos(event.rotationRate.beta, event.rotationRate.gamma);
}, function(){
console.log("generate_scene???");
generate_scene();
});
}
我遇到的问题是,经过此检查后会生成一些场景。
但是,此场景需要首先在检查中首先设置var。但是检查要花很长时间,所以检查完成后我添加了一个回调。
但是此回调永远不会触发...为什么?换句话说,永远不会记录
generate_scene???
,并且永远不会运行generate_scene();
。为什么会这样呢?这样做的正确方法是什么?
如果有什么不清楚的地方,请让我知道,以便我澄清:)
最佳答案
接下来的问题是:.addEventListener方法中的第三个参数是函数,而不应该是函数,因为在文档中,如果恰好是“ useCapture”,则第三个参数是布尔值。
尝试从check_user_hardware()中声明generate_scene函数,然后在之后调用它
calculate_rotation_mesh_pos(event.rotationRate.beta,event.rotationRate.gamma);
generate_scene();
它可能会起作用。