switch (e.keyCode) {
case 32:
$("#Main").prepend('<div class="Bomb" style="absolute; top:' + position.top + 'px; left: '+ position.left +'px;"></div>');
setTimeout( function(){
var BombPos = $('.Bomb').position();
var BombPosTopb = BombPos.top;
var BombPosLeftb = BombPos.left;
var BombPosTopt = BombPos.top;
var BombPosLeftt = BombPos.left;
var BombPosTopl = BombPos.top;
var BombPosLeftl = BombPos.left;
var BombPosTopr = BombPos.top;
var BombPosLeftr = BombPos.left;
$(this).remove();
.... More stuff
if (CheckRight == false){
$("#Main").prepend('<div class="Effect" style="absolute; top:' + BombPosTopr + 'px; left: '+ BombPosLeftr +'px;"></div>');
BombPosLeftr += 30;
}
};
setTimeout( function(){
$('.Effect').remove();
}
, 1000 );
}
, 1500 );
我的项目被称为Bomberman,我正在尝试生成多个炸弹。 这段代码的问题是:我产生了这个对象,它可以正常工作。它没有任何问题。
但是当我点击我的空格键多次并放入1个以上的炸弹时,它们会同时消失 。
我只是希望他们在我的每一枚小型炸弹上都有一个“单独的计时器”,所以当我点击空格键并且不是一次全部时,它们会在1-2秒之后消失。
答案 0 :(得分:0)
我认为正确的方法是创建一个超时方法,只删除时间到了的炸弹。 F.E.通过记住你为每个炸弹启动计时器的时间。
答案 1 :(得分:0)
将你的炸弹变成物体。
你需要一个记住所有炸弹的var:
var arrBombs = new Array();
然后在keypress
上添加一个新对象:
case 32:
arrBombs.push(new objBomb());
然后为你的objBomb提供一个包含代码的函数:
function objBomb(){
var self = this;
self.el = $('<div/>');
self.el.addClass('bomb')
self.el.css({position : 'absolute', top : position.top + 'px', left : position.left+'px'})
$("#Main").prepend(self.el);
self.explosionTime = setTimeout( function(){
self.BombPos = self.el.position();
self.BombPosTopb = self.BombPos.top;
self.BombPosLeftb = self.BombPos.left;
self.BombPosTopt = self.BombPos.top;
self.BombPosLeftt = self.BombPos.left;
self.BombPosTopl = self.BombPos.top;
self.BombPosLeftl = self.BombPos.left;
self.BombPosTopr = self.BombPos.top;
self.BombPosLeftr = self.BombPos.left;
$(self).remove();
.... More stuff
if (CheckRight == false){
$("#Main").prepend('<div class="Effect" style="absolute; top:' + BombPosTopr + 'px; left: '+ BombPosLeftr +'px;"></div>');
BombPosLeftr += 30;
}
};
}
代码可能不准确,您肯定会有错误。但对于您的项目,创建obj是最佳解决方案。
如果您不知道对象是什么,请检查MDN Working With Objects。