gpt4 book ai didi

jquery - 使用 jquery 制作的 Div 不尊重 jquery 函数

转载 作者:太空宇宙 更新时间:2023-11-04 03:22:02 25 4
gpt4 key购买 nike

我正在尝试制作一个简单的游戏,这就是我目前所拥有的 http://codepen.io/akshay-7/pen/Ggjxwb我在使类 .blt 的 div 与 .enmy 类发生冲突时遇到问题。 div blt 是使用 jquery 创建的。我可以使飞机与敌人相撞(尝试通过按箭头键使飞机与敌人相撞)但不能用'blt'做到这一点

 function collision() { 
var $div1=$('#plane'); //the .blt class is appended to this div
var $div2=$('.enmy');
var x1 = $div1.offset().left;
var y1 = $div1.offset().top;
var h1 = $div1.outerHeight(true);
var w1 = $div1.outerWidth(true);
var b1 = y1 + h1;
var r1 = x1 + w1;
var x2 = $div2.offset().left;
var y2 = $div2.offset().top;
var h2 = $div2.outerHeight(true);
var w2 = $div2.outerWidth(true);
var b2 = y2 + h2;
var r2 = x2 + w2;

if (b1 < y2 || y1 > b2 || r1 < x2 || x1 > r2) return false;
var col=$('.enmy').hide();
return col;
}

我尝试将 var $div1 更改为 bullet 因为这是用于存储使用 jquery 创建的 div 的变量

次要问题

为什么我要输入这段代码

window.setInterval(function() {
$('').text(collision($(''), $('')));
}, 200);

为了让它工作

最佳答案

请检查这个fiddle ,我已经解决了一些小问题,现在可以使用了。

问题不在于碰撞方法(实际上,它工作正常)。问题在于,当您检查是否发生碰撞时,子弹位置与飞机相同。子弹在移动是的,但是当你实际检查它时,它和飞机是一样的。您需要添加和间隔并检查子弹是否在其当前位置发生碰撞。

$(document).click(function () {
var plane = $('#plane');
var bull_to_append = $('<div class="blt"/>');
var bullet = bull_to_append.appendTo(plane);

var i = setInterval(function () {
collision(bull_to_append);
}, 10);

setTimeout(function () {
bullet.fadeOut(1200, function () {
bullet.remove();
clearInterval(i);
})
}, 300);
});

此外,一旦用户按下一个键,您必须检查飞机的新位置是否与敌人相撞:

$(document).keydown(function (key) {

switch (parseInt(key.which, 10)) {
case 38:
$('#plane').animate({
top: "-=10px"
}, 10);
break;

case 39:
$('#plane').animate({
left: "+=10px"
}, 10);
break;

case 37:
$('#plane').animate({
left: "-=10px"
}, 10);
break;


case 40:
$('#plane').animate({
top: "+=10px"
}, 10);
break;

}

collision($('#plane'));
});

我只修改了一点碰撞方法,以便通过哪个元素检查碰撞:

function collision($div1) {
var $div2 = $('.enmy');
var x1 = $div1.offset().left;
var y1 = $div1.offset().top;
var h1 = $div1.outerHeight(true);
var w1 = $div1.outerWidth(true);
var b1 = y1 + h1;
var r1 = x1 + w1;
var x2 = $div2.offset().left;
var y2 = $div2.offset().top;
var h2 = $div2.outerHeight(true);
var w2 = $div2.outerWidth(true);
var b2 = y2 + h2;
var r2 = x2 + w2;

if (b1 < y2 || y1 > b2 || r1 < x2 || x1 > r2) {
//console.log("not collide");
return;
}

//console.log("collide");
$div2.hide();
}

希望对您有所帮助。

关于jquery - 使用 jquery 制作的 Div 不尊重 jquery 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27731854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com