2010-03-26 3 views
1

Avec Flash, est-il possible de détecter si un objet est complètement sur un autre? E.g. J'ai un rectangle (surface de plancher) et un cercle (meuble).

Maintenant, je veux détecter si le cercle est entièrement dans le rectangle, et pas seulement s'il touche le rectangle quelque part. Est-ce possible ? Comment ?Zone de détection d'impact instantané

Répondre

2

Bien sûr:

function testOverlap(large:DisplayObject, small:DisplayObject):Boolean { 
    return large.getBounds(stage).containsRect(small.getBounds(stage)); 
} 

En d'autres termes, obtenir le rectangle de limites du grand objet, et utiliser Rectangle.containsRect pour voir si elle contient le rectangle des limites du petit objet.

0

Je l'ai utilisé la bibliothèque de détection de collision vu ici: http://www.tink.ws/blog/as-30-hittest/

Les fonctions de détection de collision vous revenez à un objet flash.geom.Rectangle qui représente les limites de chevauchement des 2 objets se percutent. Vous pouvez l'utiliser pour accomplir ce que vous voulez en vérifiant la largeur et la hauteur du rectangle par rapport à la largeur et la hauteur de votre cercle, si elles correspondent au cercle est complètement sur le rectangle.

2

ou sans avoir à traiter avec le nouveau code, si votre application est assez simple, vous pourriez utiliser une solution comme l'illustre ce schéma:

alt text http://www.andrewwalpole.com/hitsolution.gif

Avoir un objet zone touchée séparé qui est plus petit que le sol garantira que vous obtiendrez seulement un coup quand le cercle est entièrement au-dessus du plancher.

+0

+1. très agréable :) – back2dos

+0

Une bonne idée, mais vous auriez besoin d'un objet de test invisible supplémentaire pour chaque paire d'objets à tester. Pas une solution générale;) – fenomas

Questions connexes