apache-flex - 弹性 : Determine if a component is showing

标签 apache-flex flash events components

确定 Flex/Flash 中的组件是否显示在用户屏幕上的最佳方法是什么?我正在寻找类似于 Java 的 Component.isShowing()方法。
showhide事件为可见性而触发,这似乎适用于 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/

相关文章:

javascript - html 多文件选择和队列(添加/删除)

javascript - 捕捉并停止中键点击

c# - 如何在 .NET Remoting 中远程处理事件?

apache-flex - 如何在 Adob​​e Flex/AIR 应用程序中存储用户首选项

css - Flex TabNavigator 选项卡颜色不起作用

apache-flex - Flex Builder的开源替代品?

apache-flex - flex 移动项目 : Establish http connection to a specific url

javascript - 在准确的时间停止视频

javascript - IE11 Issue : When moving an IFrame with Flash in it, 部分背景泄露

c# - "right"是什么方法可以在事件发生后将 C# 中的方法运行延迟一段时间,同时仍让原始线程运行?