yo estaba tratando de obtener la misma de una manera reutilizable .. casi me descubrió una manera usando getObjectsUnderPoint() - devuelve el objeto bajo un punto particolar, z-ordenado (incluso si no son hermanos, p. ej. ViewStack, Popups, ecc.).
Básicamente, obtengo el objeto de visualización superior debajo de un punto particular del escenario, luego voy a la jerarquía de objetos de visualización para encontrar el objeto probado. Si lo encuentro, el objeto es visible (los objetos no visibles en la jerarquía ya deben ser filtrados por la llamada getObjectsUnderPoint).
El problema aquí es que debe usar un punto no transparente de su objeto (en mi caso, utilicé un desplazamiento de 5 píxeles debido a los bordes redondeados), de lo contrario no será recogido por esta función.
¿Alguna idea para mejorar?
Cosma
public static function isVisible(object:DisplayObject):Boolean {
var point:Point = object.localToGlobal(new Point(5, 5));
var objects:Array = object.stage.getObjectsUnderPoint(point);
if (objects.length > 0) {
if (isDescendantOf(object, objects[objects.length - 1] as DisplayObject)) {
return true;
}
}
return false;
}
public static function isDescendantOf(parent:DisplayObject, child:DisplayObject):Boolean {
while (child.parent != null) {
if (child.parent === parent) {
return true;
} else {
child = child.parent;
}
}
return false;
}
¿Hay alguna razón para parar en la aplicación y no sólo cuando los padres == null? –
Parece recordar que la propiedad "principal" de la Aplicación podría ser un puntero a la misma instancia que causaría un bucle infinito. No estoy 100% seguro y no puedo confirmarlo fácilmente ya que no he estado haciendo ningún trabajo Flex desde hace un par de años. –