Flex:确定组件是否显示

确定Flex / Flash中的组件是否显示用户屏幕上的最佳方式是什么?我正在寻找一种模拟 JavaComponent.isShowing()方法.

显示和隐藏事件触发可见性,这似乎适用于ViewStack组件的第一个后代,但不会进一步显示显示树中.

解决方法

UIComponent.visible对于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;
        }
    }
}

我没有做任何事情,而不是简单的测试,但它应该让你开始.

相关文章

一:display:flex布局display:flex是一种布局方式。它即可以...
1. flex设置元素垂直居中对齐在之前的一篇文章中记载过如何...
移动端开发知识点pc端软件和移动端apppc端软件是什么,有哪些...
最近挺忙的,准备考试,还有其他的事,没时间研究东西,快周...
display:flex;把容器设置为弹性盒模型(设置为弹性盒模型之后...
我在网页上运行了一个Flex应用程序,我想使用Command←组合键...