Frage

Gibt es eine Möglichkeit, alle Movieclips in einem Bereich mit AS3 zu bekommen Ich brauche diese Mehrfachauswahl zu tun.

War es hilfreich?

Lösung

Es ist vielleicht nicht notwendig sein getObjectsUnderPoint(). zu verwenden Wenn alle Elemente in einem einzigen Clip enthalten sind, könnten Sie einfach eine Schleife durch die Container Kinder und überprüfen, ob sie in Ihrer Auswahl sind.

// 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);
    }
}

Andere Tipps

Ich bin mir ziemlich sicher, dass es nichts „eingebaut“, dass alle die Movieclips innerhalb eines Bereichs erhalten.

Das einzige, was nahe kommt, ist wahrscheinlich getObjectsUnderPoint . Diese Methode werden Ihnen die Liste des Displayobjects unter einem einzigen Punkt, nicht ein Bereich, kann aber manuell in einem Bereich findet Movieclips verwendet werden.

Sie können ein Sprite haben, dass der „Bereich“ ist. Das bedeutet, dass es die Größe der Fläche ist das Sie überprüfen möchten. Also nur eine Schleife durch jede MovieClip- und Kontrolle mit hitTestObject oder hitTestPoint wenn der Movieclip kollidiert mit dem Sprit. Wenn ja, dann ist es in diesem Bereich. Dies ist, wie ich die Drag und wählen Sie Einheiten, was in RTS-Spiele erstellen.

Nun, wenn Sie alle Objekte unter einer Fläche überprüfen möchten, müssen Sie Verwendung für Schleife mit hitTestPoint Methode. und diese Schleife kann, indem man große Schrittweite auf dieser for-Schleife optmized werden. wenn Sie zum Beispiel weiß, dass Sie kein solches Objekt, deren Breite oder Höhe kleiner als 50 Pixel haben, dann werden Sie 50 als die Zunahme in der verschachtelten Schleife setzen entweder auf Höhe oder Breite oder beides .. hier ist die Probe alle Punkte unter dem Rechteckbereich oder einen Bereich, den Sie angeben, finden

für (var j: int = Rect.x; j0)  {   trace ( "gefundenen Objekte" + Objekte); } } }

Nun, wenn Sie alle Objekte unter einer Fläche überprüfen möchten, müssen Sie Verwendung für Schleife mit hitTestPoint Methode. und diese Schleife kann, indem man große Schrittweite auf dieser for-Schleife optmized werden. wenn Sie zum Beispiel weiß, dass Sie kein solches Objekt, deren Breite oder Höhe kleiner als 50 Pixel haben, dann werden Sie 50 als die Zunahme in der verschachtelten Schleife setzen entweder auf Höhe oder Breite oder beides .. hier ist die Probe alle Punkte unter dem Rechteckbereich oder einen Bereich, den Sie angeben, finden

für (var j: int = Rect.x; j <= Rect.width; j ++) {

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

var pt: Punkt = new Point (x, y);

Objekte = container.getObjectsUnderPoint (pt)

if (objects.length> 0)  {   trace ( "gefundenen Objekte" + Objekte); }

}

}

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top