我正在尝试创建一个游戏,当玩家关闭窗口时,mongo数据库将更改为“ player1 is inactive”。
这是我在main.js中的代码:
window.addEventListener('beforeunload', function (e) {
Games.update({_id : myGuy},{$set:{active : 0}});
// Cancel the event
e.preventDefault();
// Chrome requires returnValue to be set
e.returnValue = '';
});
它偶尔会在Firefox中运行,而几乎不会在Chrome中运行。我在想流星可能会更改本地迷你mongo,但不知道要更改服务器上的mongo吗? (只是一个想法。)
答案 0 :(得分:0)
作为对Jankapunkt的回应,上面的代码在客户端,但是我仍然启用了“自动发布”,所以这应该不是问题。
响应Jimish Gamit,感谢您提供信息。确实确实是Chrome的错误。我尝试了警报框,但似乎没有帮助。
window.addEventListener('beforeunload', function (e) {
Games.update({_id : myGuy},{$set:{active : 0}});
e.preventDefault();
return "alert"
})
作为解决方法,我刚刚创建了一个自定义的aframe组件,该组件创建了一个密钥,该密钥可以在需要时将播放器重置为非活动状态,这是我能想到的最好的结果。
AFRAME.registerComponent('reset', {
init: function() {
document.addEventListener('keydown', (event) => {
const keyName = event.key;
if (keyName === 'r') {
if (Games.findOne()) {
var playerId1 = Games.findOne({name: "player1"})._id;
var playerId2 = Games.findOne({name: "player2"})._id;
Games.update({_id : playerId1},{$set:{active : 0}});
Games.update({_id : playerId2},{$set:{active : 0}});
}
}
})
}
})