jQuery Collision
J'ai ce jeu je suis en train d'écrire avec jQuery Collision, et il utilise les touches du clavier pour déplacer un div, quand un div en contact avec une autre div, il doit éviter les chevauchements.
Comment diable puis-je faire?
HTML ----
<!DOCTYPE html>
<html>
<head>
<title></title>
<link href="style.css" rel="stylesheet" />
<script src="jquery.min.js" rel="javascript"></script>
<script src="game.js" rel="javascript"></script>
<script src="jquery-collision-1.0.1.js" rel="javascript"></script>
<script src="jquery-ui-draggable-collision-1.0.1.js" rel="javascript"></script>
</head>
<body>
<div id="office">
<div class="popup">
<p>hello desk</p>
<a class="close">X</a>
</div>
<div class="chris"></div>
<!--Rian, Peter, Chris, Christopher ---------------- DESK -->
<div class="desk-full" style="position: absolute; right: 50px; top: 50px;">
<div class="christopher-stuff"></div>
</div>
<!--Adrian, Tatam, Ellize ---------------- DESK -->
<div class="desk-full" style="position: absolute; right: 50px; top: 300px;">
</div>
</div>
</body>
</html>
JAVASCRIPT----
$(document).ready(function(){
$(".chris").click(function(){
var KEY = {
UP: 38,
DOWN: 40,
LEFT: 37,
RIGHT: 39
}
//a global object to store all global variable used for the game
var office = {
}
//an array to remember which key is pressed and which is not.
office.pressedKeys = [];
$(function(){
//set interval to call gameloop every 30 milliseconds
office.timer = setInterval(gameloop,30);
//mark down what key is down and up into an array called "pressedKeys"
$(document).keydown(function(e){
office.pressedKeys[e.keyCode] = true;
});
$(document).keyup(function(e){
office.pressedKeys[e.keyCode] = false;
});
});
//this function is called every 30 milliseconds
function gameloop()
{
moveMe();
collideDetection();
}
function moveMe()
{
if (office.pressedKeys[KEY.UP]) //arrow up
{
var direction = parseInt($(".chris").css("top"));
$(".chris").css({
top: direction-5,
background: "url(chris-top.gif) no-repeat !important",
width: "43px",
height: "44px"
});
}
if (office.pressedKeys[KEY.DOWN]) //arrow down
{
var direction = parseInt($(".chris").css("top"));
$(".chris").css({
top: direction+5,
background: "url(chris-down.png) no-repeat !important",
width: "48px",
height: "25px"
});
}
if (office.pressedKeys[KEY.LEFT]) //left
{
var direction = parseInt($(".chris").css("left"));
$(".chris").css({
left: direction-5,
background: "url(chris-left.gif) no-repeat !important",
width: "43px",
height: "44px"
});
}
if (office.pressedKeys[KEY.RIGHT]) //right
{
var direction = parseInt($(".chris").css("left"));
$(".chris").css({
left: direction+5,
background: "url(chris-right.gif) no-repeat !important",
width: "43px",
height: "44px"
});
}
if (office.pressedKeys[KEY.UP] & office.pressedKeys[KEY.RIGHT]) //arrow up
{
$(".chris").css({
background: "url(chris-top-right.png) no-repeat left top !important",
width: "43px",
height: "44px"
});
}
if (office.pressedKeys[KEY.UP] & office.pressedKeys[KEY.LEFT]) //arrow up
{
$(".chris").css({
background: "url(chris-top-left.png) no-repeat !important",
width: "43px",
height: "44px"
});
}
if (office.pressedKeys[KEY.DOWN] & office.pressedKeys[KEY.RIGHT]) //arrow down
{
$(".chris").css({
background: "url(chris-down-right.png) no-repeat !important",
width: "43px",
height: "44px"
});
}
if (office.pressedKeys[KEY.DOWN] & office.pressedKeys[KEY.LEFT]) //arrow down
{
$(".chris").css({
background: "url(chris-down-left.png) no-repeat !important",
width: "43px",
height: "44px"
});
}
}
function collideDetection(){
var chrisY = parseInt($(".chris").css("top"));
var chrisX = parseInt($(".chris").css("left"));
var chrisY = chrisY + 50;
var chrisX = chrisX + 50;
//-------------------- jQuery Collision Dtection and Prevention of Overlapping ---------------------
var hit_list = $(".chris").collision( { obstacle: ".desk-full", preventCollision: true } );
var officeHeight = parseInt($("#office").height());
var officeWidth = parseInt($("#office").width());
if(shipX <= 0) {
$(".chris").css({
left: "0",
background: "url(chris-right.png) no-repeat !important",
width: "25px",
height: "48px"
});
}
if(chrisX > officeWidth) {
$(".chris").css({
left: "0px",
background: "url(chris-left.png) no-repeat !important",
width: "25px",
height: "48px"
});
}
if(chrisX <= 0) {
$(".chris").css({
top: "0",
background: "url(chris-down.png) no-repeat !important",
width: "48px",
height: "25px"
});
}
if(chrisY > officeHeight) {
$(".chris").css({
top: "0px",
background: "url(chris-up.png) no-repeat !important",
width: "48px",
height: "25px"
});
}
}
});
});
Vous devez vous connecter pour publier un commentaire.
JS:
CSS:
HTML:
Vous pouvez utiliser JQuery Collision et JQuery UI Déplaçable Collision.
JQuery Collision extension renvoie la collision entre les deux sélecteurs. Poignées de rembourrage, de marge, de frontières, et peut déterminer le chevauchement ou la partie à l'extérieur.
Avec JQuery Collision vous pouvez trouver toutes les chevauchements:
Renvoie une liste de tous les éléments qui se chevauchent "#sélecteur".
Avec JQuery UI Déplaçable, vous pouvez lier un événement lorsque vous faites glisser un élément et une collision se produit et vous pouvez éviter la collision:
Des plugins pour la détection de collision:
Collidable Draggables,
Collision Vérifier le plug-in v1.1,
$.de l'événement.spécial.drop
Aussi :
JS:
CSS:
HTML: