Pregunta

¿Hay una manera de conseguir todos los clips de película dentro de una zona con AS3 necesito esto para hacer una selección múltiple.

¿Fue útil?

Solución

Puede que no sea necesario utilizar getObjectsUnderPoint(). Si todos los artículos están en un solo clip que contiene simplemente podría bucle a través de los envases que los niños y comprobar si están dentro de la selección.

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

Otros consejos

Estoy bastante seguro de que no hay nada "built-in" que hará que todos los movieclips dentro de un área.

Lo único que se acerca es probablemente getObjectsUnderPoint . Este método le dará la lista de DisplayObjects bajo un solo punto, no es una zona, pero se podría utilizar para encontrar manualmente MovieClips en una zona.

podría tener un sprite que es la "zona". Eso significa que es el tamaño de la zona que desea comprobar. Por lo que sólo bucle a través de cada clip de película y el cheque con hitTestObject o hitTestPoint si las colisiona movieclip con el sprite. Si es así, entonces es en esa zona. Esto es cómo creo el arrastre y seleccione las unidades que en los juegos de estrategia en tiempo real.

Bueno, si usted quiere comprobar todos los objetos bajo un área, usted tiene que utilizar para el lazo con el método hitTestPoint. y este bucle puede optmized poniendo incremento grande en este bucle. por ejemplo, si usted sabe que usted no tiene tal objeto cuya anchura o la altura es menor de 50 píxeles a continuación, va a poner 50 como el incremento en el bucle anidado ya sea en altura o anchura o ambos .. aquí es la muestra para encontrar todos los puntos bajo el área de rectángulo o cualquier área que especifique

for (var j: int = rect.x; j0)  {   trace ( "objetos encontrados" objetos +); } } }

Bueno, si usted quiere comprobar todos los objetos bajo un área, usted tiene que utilizar para el lazo con el método hitTestPoint. y este bucle puede optmized poniendo incremento grande en este bucle. por ejemplo, si usted sabe que usted no tiene tal objeto cuya anchura o la altura es menor de 50 píxeles a continuación, va a poner 50 como el incremento en el bucle anidado ya sea en altura o anchura o ambos .. aquí es la muestra para encontrar todos los puntos bajo el área de rectángulo o cualquier área que especifique

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

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

var pt: Point = nuevo punto (x, y);

objetos = container.getObjectsUnderPoint (pt)

si (objects.length> 0)  {   trace ( "objetos encontrados" objetos +); }

}

}

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top