【发布时间】:2020-04-07 02:18:04
【问题描述】:
我正在使用 SocketIO 和 AFrame 构建多人游戏体验。这个剪辑在 Aframe 0.5 中运行得非常好,但是当我切换到 v1 时,它突然停止工作。 “componentchanged”侦听器根本不会触发。 “找到我自己”总是被打印出来,所以它不像我自己是空的。
socket.on('connect',function(){
console.log('connected to server');
let myself=document.getElementById('user-cam')
if(myself!=null){
console.log(name)
console.log("FOUND MYSELF")
const player={name:name,translation:[0,0,0],rotation:[0,0,0]};
socket.emit('player connect',player);
isConnected=true;
myself.addEventListener('componentchanged', function (evt) {
console.log("Component Changed");
console.log(evt.detail.newData);
if(evt.detail.name==='position'){
player.translation=[evt.detail.newData.x,evt.detail.newData.y,evt.detail.newData.z];
socket.emit("PlayerMove",player);
}
if (evt.detail.name==='rotation'){
player.rotation= [evt.detail.newData.x,evt.detail.newData.y,evt.detail.newData.z];
socket.emit("PlayerRotate",player);
}
});
}
else{
console.log("NOT FOUND");
}
});
【问题讨论】:
-
我为每个版本 0.5 和之后测试了这段代码,它在 0.5 和 0.6 上都可以正常工作,对于 0.7 和 0.8 有错误(意料之中,因为 evt.detail 只包含从 0.7 开始更改)。从 0.9 开始,它永远不会触发(“组件已更改”不记录)
标签: javascript dom-events aframe webvr