Domanda

C'è un modo per ottenere tutti i clip filmato all'interno di un'area con AS3 ho bisogno di questo per fare la selezione multipla.

È stato utile?

Soluzione

Potrebbe non essere necessario utilizzare getObjectsUnderPoint(). Se tutti gli articoli sono in una singola clip contenente si può semplicemente scorrere i contenitori figli e verificare se sono all'interno della vostra selezione.

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

Altri suggerimenti

Sono abbastanza sicuro che non c'è nulla di "built-in", che avranno tutti i Movieclips all'interno di un'area.

L'unica cosa che si avvicina è probabilmente getObjectsUnderPoint . Questo metodo vi darà l'elenco dei DisplayObjects sotto un unico punto, non una zona, ma potrebbe essere usato per trovare manualmente MovieClip in una zona.

Si potrebbe avere uno sprite che è la "zona". Ciò significa che è la dimensione della zona che si desidera controllare. Quindi, solo ciclo attraverso ogni movieclip e controllo con hitTestObject o hitTestPoint se le scontra MovieClip con lo sprite. Se è così allora è in quella zona. Questo è come creo il trascinamento e selezionare le unità cosa nei giochi RTS.

Beh, se si desidera controllare tutti gli oggetti in una zona, è necessario utilizzare per il ciclo con il metodo hitTestPoint. e questo ciclo può essere optmized mettendo grande incremento su questo per ciclo. per esempio, se si sa che non hai tale oggetto la cui larghezza o altezza è minore di 50 pixel, allora si metterà 50 come l'incremento nel ciclo nidificato sia su larghezza o altezza o entrambi .. qui è il campione di trovare tutti i punti sotto la zona rettangolo o qualsiasi area specificati

for (var j: int = Rect.x; J0)  {   trace ( "oggetti trovati" oggetti +); } } }

Beh, se si desidera controllare tutti gli oggetti in una zona, è necessario utilizzare per il ciclo con il metodo hitTestPoint. e questo ciclo può essere optmized mettendo grande incremento su questo per ciclo. per esempio, se si sa che non hai tale oggetto la cui larghezza o altezza è minore di 50 pixel, allora si metterà 50 come l'incremento nel ciclo nidificato sia su larghezza o altezza o entrambi .. qui è il campione di trovare tutti i punti sotto la zona rettangolo o qualsiasi area specificati

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

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

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

oggetti = container.getObjectsUnderPoint (pt)

if (objects.length> 0)  {   trace ( "oggetti trovati" oggetti +); }

}

}

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top