Question

Y at-il un moyen d'obtenir tous les clips dans une zone avec AS3 je besoin de ce faire une sélection multiple.

Était-ce utile?

La solution

Il pourrait ne pas être nécessaire d'utiliser getObjectsUnderPoint(). Si tous les éléments sont en un seul clip contenant, vous pouvez simplement boucle à travers les conteneurs enfants et de vérifier si elles sont dans votre sélection.

// The list of items contained in the selection.
var selection:Array = new Array();

// The rectangle that defines the selection in the containers coordinate space.
var selectionRect:Rectangle = new Rectangle(x, y, width, height);

// Loop throught the containers children.
for(var a:int; a<container.numChildren; a++){
    // Get the childs bounds in the containers coordinate space.
    var child:DisplayObject = container.getChildAt(a);
    var childBounds:Rectangle = child.getRect(container);

    // Check if this childs bounds against the selection bounds
    if(childBounds.intersects(selectionRect)){
        selection.push(child);
    }
}

Autres conseils

Je suis assez sûr qu'il ya « intégré » est rien qui obtenir tous les MovieClips intérieur d'une zone.

La seule chose qui vient est proche probablement getObjectsUnderPoint . Cette méthode vous donnera la liste des DisplayObjects sous un seul point, et non pas une zone, mais il pourrait être utilisé pour rechercher manuellement MovieClips dans une zone.

Vous pourriez avoir une image-objet la « zone ». Ce qui signifie que c'est la taille de la zone que vous voulez vérifier. Il suffit donc de boucle à travers tous les movieclip et vérifier avec hitTestObject ou hitTestPoint si les entre en collision avec MovieClip l'image-objet. Si oui, alors il est dans ce domaine. Voici comment je crée la traînée et sélectionner les unités dans les jeux RTS chose.

Eh bien, si vous voulez vérifier tous les objets dans une zone, vous devez utiliser pour la boucle avec la méthode hitTestPoint. et cette boucle peut être optmized en mettant incrément sur cette boucle. par exemple, si vous savez que vous avez pas un tel objet dont la largeur ou la hauteur est inférieure à 50 pixels alors vous mettrez 50 comme l'incrément dans la boucle imbriquée soit de la largeur ou de la hauteur ou les deux .. voici l'échantillon pour trouver tous les points sous la zone rectangulaire ou toute autre zone que vous spécifiez

for (var j: int = Rect.x; j0)  {   trace ( "objets trouvés" objets +); } } }

Eh bien, si vous voulez vérifier tous les objets dans une zone, vous devez utiliser pour la boucle avec la méthode hitTestPoint. et cette boucle peut être optmized en mettant incrément sur cette boucle. par exemple, si vous savez que vous avez pas un tel objet dont la largeur ou la hauteur est inférieure à 50 pixels alors vous mettrez 50 comme l'incrément dans la boucle imbriquée soit de la largeur ou de la hauteur ou les deux .. voici l'échantillon pour trouver tous les points sous la zone rectangulaire ou toute autre zone que vous spécifiez

for (var j: int = Rect.x; j <= Rect.width; j ++) {

for (var i: int = Rect.y; i <= Rect.height; i ++) {

var pt: point = nouveau point (x, y);

= container.getObjectsUnderPoint objets (pt)

if (objects.length> 0)  {   trace ( "objets trouvés" objets +); }

}

}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top