26-02-2009, 04:34 AM
Ça fonctionne, mais seulement quand ils se touchent en bas.
Je te redonne ton exemple, mais qui se touche en haut (donc non fonctionnel) :
Je te redonne ton exemple, mais qui se touche en haut (donc non fonctionnel) :
Code PHP :
<?php
<html>
<body>
<div id='c1' style="position : absolute; left: 88px; top: 160px; background:#f00; width:100px; height:100px" >c1</div>
<div id='c2' style="position : absolute; left: 84px; top: 150px; background:#0f0; width:100px; height:100px;">c2</div>
<div id='c3' style="position : absolute; left: 308px; top: 160px; background:#88f; width:100px; height:100px;">c3</div>
<script>
function sommetDansCarre (x, y, carrePivot)
{
if ( ( parseInt(x) >= parseInt(carrePivot.style.left) ) &&
( parseInt(x) <= parseInt(carrePivot.style.left) + parseInt(carrePivot.style.width) -1) &&
( parseInt(y) >= parseInt(carrePivot.style.top) ) &&
( parseInt(y) <= parseInt(carrePivot.style.top) + parseInt(carrePivot.style.height) -1) )
{
return true;
}
else
{
return false;
}
}
function Collision (Carre2, Carre1)
{
if (sommetDansCarre ( Carre2.style.left, Carre2.style.top, Carre1) ||
sommetDansCarre (Carre2.style.left + Carre2.style.width-1, Carre2.style.top, Carre1) ||
sommetDansCarre (Carre2.style.left, Carre2.style.top + Carre2.style.height-1, Carre1) ||
sommetDansCarre (Carre2.style.left + Carre2.style.width-1, Carre2.style.top + Carre2.style.height-1, Carre1) )
alert("collision entre "+Carre2.innerHTML+" et "+Carre1.innerHTML);
else
alert(" pas de collision entre "+Carre2.innerHTML+" et "+Carre1.innerHTML);
}
Collision( document.getElementById('c2'), document.getElementById('c1') );
Collision( document.getElementById('c1'), document.getElementById('c3') );
Collision( document.getElementById('c3'), document.getElementById('c2') );
</script>
</body>
</html>