加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex:确定组件是否显示

发布时间:2020-12-15 02:14:20 所属栏目:百科 来源:网络整理
导读:确定Flex / Flash中的组件是否显示在用户屏幕上的最佳方式是什么?我正在寻找一种模拟 Java的 Component.isShowing()方法. 显示和隐藏事件触发可见性,这似乎适用于ViewStack组件的第一个后代,但不会进一步显示在显示树中. 解决方法 UIComponent.visible对于v
确定Flex / Flash中的组件是否显示在用户屏幕上的最佳方式是什么?我正在寻找一种模拟 Java的 Component.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;
        }
    }
}

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读