确定组件是不是在 Flex 中完全可见的算法?
Posted
技术标签:
【中文标题】确定组件是不是在 Flex 中完全可见的算法?【英文标题】:Algorithm to determine if a component is fully visible in Flex?确定组件是否在 Flex 中完全可见的算法? 【发布时间】:2010-09-21 14:19:36 【问题描述】:是否有一种内置方法可以确定组件在 Flex 应用程序中是否完全可见(即不是以一种或另一种方式离开屏幕)。如果不是,我将如何解决?
如果我的主要“下一个”和“上一个”按钮不在屏幕上,我想显示或隐藏其他“下一个”和“上一个”按钮。
“重新计算”最好听什么事件? stage.resize?
谢谢!
【问题讨论】:
【参考方案1】:您能否详细说明可见项目及其所在的容器?是否必须滚动一些容器才能到达按钮?还是有人将 flexlib:MDICanvas 的子窗口部分拖出屏幕的问题?
我认为它会归结为组件的 x,y 位置是否超出其容器的宽度和高度,(依此类推,直到您到达***应用程序为止。)
【讨论】:
【参考方案2】:这是一种计算组件是否在舞台范围内的方法,但是它不会告诉您该组件是否被另一个组件隐藏,或者该组件是否因为超出范围而被隐藏另一个容器。
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;
【讨论】:
这里不考虑组件的宽度或高度。以上是关于确定组件是不是在 Flex 中完全可见的算法?的主要内容,如果未能解决你的问题,请参考以下文章
通过从 flex 中的另一个 mxml 文件访问组件来使组件不可见