2008-11-10 62 views
2

是否有內置的方式來確定組件在Flex應用程序中是否完全可見(即,不是以某種方式離開屏幕)。如果不是,我會怎麼去想像它?確定組件在Flex中是否完全可見的算法?

如果我的主「下一個」和「上一個」按鈕在屏幕外,我想顯示或隱藏附加的「下一個」和「上一個」按鈕。

什麼事件最好聽'重新計算'? stage.resize?

謝謝!

回答

0

您能否提供可見物品和容器的詳細信息?是否需要滾動某個容器才能進入按鈕?或者是某人拖動了flexlib的一個子窗口:MDICanvas部分在屏幕外?

我認爲如果組件的x,y位置超出其容器的寬度和高度(等到父容器達到最高級別應用程序爲止),我們會考慮這個問題。

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; 
} 
+0

這沒有考慮到組件的寬度或高度。 – jessecurry 2011-04-13 20:21:54