用于确定组件在Flex中是否完全可见的算法?

时间:2008-11-10 08:01:38

标签: flex

是否有内置的方法来确定某个组件在Flex应用程序中是否完全可见(即,不是屏幕外的某种方式)。如果不是我怎么去雕像呢?

如果我的主要“下一个”和“上一个”按钮不在屏幕上,我想显示或隐藏其他“下一个”和“上一个”按钮。

什么事情最好听'重新计算'? stage.resize?

谢谢!

2 个答案:

答案 0 :(得分:1)

这里有一个计算组件是否在阶段范围内的方法,但它不会告诉你组件是否被另一个组件隐藏,或者组件是否被隐藏,因为它超出了另一个容器。

public function isComponentWithinStage(c:UIComponent):Boolean {
    var tl:Point = c.localToGlobal(new Point(0, 0));
    var br:Point = c.localToGlobal(new Point(c.width, c.height));

    //are we off the left or top of stage?
    if ( tl.x < 0 || tl.y < 0 ) {
        return false;
    }

    var stage:Stage = Application.application.stage;

    //off the right or bottom of stage?
    if ( br.x > stage.width || br.y > stage.height ) {
        return false;
    }

    return true;
}

答案 1 :(得分:0)

您能否详细说明可见项目及其所在的容器?是否必须滚动一些容器才能到达按钮?或者有人拖了一个flexlib的子窗口:MDICanvas部分关闭屏幕?

我认为如果组件的x,y位置超出其容器的宽度和高度,将会归结为(依此类推到父容器,直到达到顶级应用程序。)