确定 Flex/Flash 中的组件是否显示在用户屏幕上的最佳方法是什么?我正在寻找类似于 Java 的 Component.isShowing()方法。show
和 hide
事件为可见性而触发,这似乎适用于 ViewStack 组件的第一个后代,但不适用于显示树。
最佳答案
UIComponent.visible 不一定对可见 = false 的对象的子级有效。从文档:
“在任何一种情况下,对象的子对象都不会发出显示或隐藏事件,除非对象专门编写了一个实现来这样做。”
我写了一个示例应用程序来证实这是真的。您可以做的是在显示列表中检查可见性是否在父项上为假。基本上“可见”会给出误报,但不应该给出误报。这是我放在一起的一个快速实用程序:
package
{
import flash.display.DisplayObject;
import mx.core.Application;
public class VisibilityUtils
{
public static function isDisplayObjectVisible(obj : DisplayObject) : Boolean {
if (!obj.visible) return false;
return checkDisplayObjectVisible(obj);
}
private static function checkDisplayObjectVisible(obj : DisplayObject) : Boolean {
if (!obj.parent.visible) return false;
if (obj.parent != null && !(obj.parent is Application))
return checkDisplayObjectVisible(obj.parent);
else
return true;
}
}
}
除了简单的测试之外,我没有做任何其他事情,但它应该让你开始。
关于apache-flex - 弹性 : Determine if a component is showing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/452344/