我正在使用Meteor.setInterval来计算游戏中玩家“动作点”的数量。当他们使用动作(如攻击)时,它会减少数量。但是,当事件被触发(攻击)时,它会更新我的数据库上的玩家配置文件,每次更新数据库时触发setInterval进行堆叠。它开始越来越快地反击。 编辑这就是问题所在。我不希望它更快。我只想要一个间隔运行。
这是我能找到的最接近的解决方案: prevent javascript setInterval function stacking up
没有完全正常工作,我找不到另一种方法来安排标志只有一个setInterval。
继承人的帮助:每个玩家都有不同的再生,这是从他们的个人资料中提取的。我已经为间隔替换了固定数字,并且在堆叠发生时执行了Session.get(),它保持不变。而不是数字我只是添加'x'所以它看起来像一个加载栏。
apTicker:function() {
Session.set('apRegen', Meteor.user().profile.apRegen);
Meteor.setInterval(function () {
if (Session.get('ap').length < 25) {
Session.set('ap', Session.get('ap')+"x");
}
}, Session.get('apRegen'))
},
谢谢。
答案 0 :(得分:1)
这应该做你想要的:
var apTickerInterval; //To keep track of the interval
Session.set('apRegen', Meteor.user().profile.apRegen);
//...
apTicker : function()
{
if(apTickerInterval)
Meteor.clearInterval(apTickerInterval);
apTickerInterval = Meteor.setInterval(function () {
if (Session.get('ap').length < 25) {
Session.set('ap', Session.get('ap')+"x");
}
}, Session.get('apRegen'));
}