Maison > interface Web > js tutoriel > Comment pouvez-vous utiliser jQuery/JavaScript pour détecter les collisions entre des éléments rectangulaires ?

Comment pouvez-vous utiliser jQuery/JavaScript pour détecter les collisions entre des éléments rectangulaires ?

Linda Hamilton
Libérer: 2024-11-18 18:50:02
original
683 Les gens l'ont consulté

How can you use jQuery/JavaScript to do collision detection between rectangular elements?

Détection de collision jQuery/JavaScript

Dans le domaine du développement Web, il est souvent nécessaire de détecter lorsque deux éléments d'une page entrent en collision. Ces informations sont cruciales dans diverses applications, telles que les jeux interactifs, les animations et les aménagements spatiaux.

Lorsqu'il s'agit de formes rectangulaires simples telles que <div> éléments se déplaçant dans des directions perpendiculaires, la détection de collision peut être une tâche simple. Voici une solution JavaScript qui utilise jQuery pour accomplir cela :

var overlaps = (function () {
    function getPositions( elem ) {
        var pos, width, height;
        pos = $( elem ).position();
        width = $( elem ).width();
        height = $( elem ).height();
        return [ [ pos.left, pos.left + width ], [ pos.top, pos.top + height ] ];
    }

    function comparePositions( p1, p2 ) {
        var r1, r2;
        r1 = p1[0] < p2[0] ? p1 : p2;
        r2 = p1[0] < p2[0] ? p2 : p1;
        return r1[1] > r2[0] || r1[0] === r2[0];
    }

    return function ( a, b ) {
        var pos1 = getPositions( a ),
            pos2 = getPositions( b );
        return comparePositions( pos1[0], pos2[0] ) && comparePositions( pos1[1], pos2[1] );
    };
})();
Copier après la connexion

Cette fonction prend deux éléments jQuery (a et b) comme arguments et renvoie un booléen indiquant s'ils se chevauchent. Pour ce faire, il calcule d'abord les positions et les dimensions des éléments et les compare pour déterminer s'il y a une intersection.

Pour démontrer la fonctionnalité, voici un extrait HTML qui définit une zone rectangulaire avec plusieurs cases colorées se déplaçant à l'intérieur. it :

<div>
Copier après la connexion

Enfin, jQuery est utilisé pour vérifier dynamiquement les collisions :

$(function () {
    var area = $( '#area' )[0],
        box = $( '#box0' )[0],
        html;
    
    html = $( area ).children().not( box ).map( function ( i ) {
        return '<p>Red box + Box ' + ( i + 1 ) + ' = ' + overlaps( box, this ) + '</p>';
    }).get().join( '' );

    $( 'body' ).append( html );
});
Copier après la connexion

Ce code parcourt les cases de la zone, à l'exclusion de la case rouge (#box0), et calcule si chaque boîte entre en collision avec elle. Les résultats sont ensuite affichés dans une liste de

éléments dans le navigateur.

Cette approche détecte efficacement les chevauchements <div> éléments et peut être facilement adapté pour gérer des formes et des trajectoires plus complexes en modifiant la fonction getPositions() en conséquence.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal