Javascript 是否有一个有效的jQuery Hittest?
我正在用HTML、CSS和JavaScript(jQuery)创建一个简单的游戏。有一艘主舰,所有的粒子(子弹)都来自那里。他们每个人都只是一个小角色。然后,敌人的div是屏幕上随机出现的位置 我正在寻找一种有效的方法来测试每个粒子是否击中了特定的敌人。我有些事情开始进展顺利,但很快就陷入困境。我是js新手,所以我的代码非常混乱,可能在许多其他方面效率低下。如有任何建议,将不胜感激 以下是我创建敌人和测试打击的部分:Javascript 是否有一个有效的jQuery Hittest?,javascript,jquery,hittest,Javascript,Jquery,Hittest,我正在用HTML、CSS和JavaScript(jQuery)创建一个简单的游戏。有一艘主舰,所有的粒子(子弹)都来自那里。他们每个人都只是一个小角色。然后,敌人的div是屏幕上随机出现的位置 我正在寻找一种有效的方法来测试每个粒子是否击中了特定的敌人。我有些事情开始进展顺利,但很快就陷入困境。我是js新手,所以我的代码非常混乱,可能在许多其他方面效率低下。如有任何建议,将不胜感激 以下是我创建敌人和测试打击的部分: var createEnemy = function(){ var x
var createEnemy = function(){
var xRandom = Math.floor(Math.random() * (containerW-50));
var yRandom = Math.floor(Math.random() * (containerH-50));
var newEnemy = $('<div class="enemy"></div>');
$(newEnemy).css({'left':xRandom,'top':yRandom}).appendTo('#container').fadeTo(200, .7);
var hitTest = setInterval(function(){
var enemy = $(newEnemy);
var particle = $('.particle');
var enemyT = enemy.offset().top;
var enemyB = enemy.height()+enemyT;
var enemyL = enemy.offset().left;
var enemyR = enemy.width()+enemyL;
var particleT = particle.offset().top;
var particleB = particle.height();
var particleL = particle.offset().left;
var particleR = particle.width();
if(particleT >= enemyT-particleB && particleT <= enemyB && particleL >= enemyL-particleR && particleL <= enemyR){
enemy.hide();
var removeEnemy = setTimeout(function(){
newEnemy.remove();
clearInterval(hitTest, 0);
},500);
}
}, 20);
}
var enemyInt = setInterval(createEnemy, 1000);
var create敌方=函数(){
var xRandom=Math.floor(Math.random()*(containerW-50));
var yRandom=Math.floor(Math.random()*(containerH-50));
var newfeedy=$('');
css({'left':xRandom,'top':yRandom}).appendTo('#container').fadeTo(200,.7);
var hitTest=setInterval(函数(){
var敌人=$(新敌人);
变量粒子=$('.particle');
var enemyT=敌方.offset().top;
var enemyB=敌方高度()+enemyT;
var enemyL=敌方.offset().左;
var enemyR=敌方.width()+enemyL;
var particleT=particle.offset().top;
var particleB=particle.height();
var particleL=particle.offset().left;
var particleR=particle.width();
如果(particleT>=enemyT particle&&particleT=enemyL particleR&&particleL如果您希望获得最佳性能,请删除jQuery并使用本机JavaScript
如果这不是一个选项,那么分析最慢的部分并在那里使用本机DOM,例如
var newEnemy = $('<div class="enemy"></div>');
谢谢,如果我不能加速的话,我以后肯定会改变。我有另一款游戏,它可以更快地生成新的div,而且有更多的样式,看起来效果不错。我想我的问题可能是我每次都会设置20毫秒的密集设置间隔。还有其他方法吗?我会重新设置用本机代码编写一堆jQuery内容,然后对它们进行分析,看看是什么给了您最好的性能增强。根据我的经验,使用本机优于jQuery的性能优势是微不足道的,您会失去它提供的方便性和可读性。我给出的大多数示例确实需要在其他方面进行优化明显的方式。例如,页面上的元素太多。
var newEnemy = document.createElement('div');
newEnemy.className = 'enemy';