2012-09-25 51 views
2

我試圖寫一個函數如何測試Flex控件是否被另一個遮擋?

internal function isObscured(o: DisplayObject): Boolean; 

它告訴給定對象o是否被另一個對象部分或完全遮擋。我已經嘗試過使用hitTestObjecthitTestPoint;如果我測試指向手邊物體的邊界矩形 - 後者實際上會做我想要的 - 效率不高。我也嘗試使用setChildIndex,但它似乎沒有幫助,因爲即使它沒有最大的子索引,對象也可能不被遮擋。

我目前的做法是測試對象具有較大的子指數比眼前的對象中的任何邊框是否手頭的對象的邊界矩形相交,但我懷疑這將僅用於測試是否有任何工作兄弟重疊我的對象。

有誰知道是否有更好的方法來檢查Flex控件是否被另一個遮擋?

回答

1

您必須檢索代表每個組件的矩形並對其進行測試。

大家都在這裏解釋:Flex collision testing with hitTestObject

HIH

+0

的'components'將是那些具有比眼前的對象較大的子指數?在我看來,子女指數是每個父母,而不是每個階段。 –

+0

您應該改用對象的深度屬性。這個問題是與這樣的問題有關:http://stackoverflow.com/questions/1276108/flex-collision-testing-with-hittestobject – poussma

+0

啊,有趣的 - 我不知道['深度](http:// help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/core/UIComponent.html#depth)!不幸的是,它似乎只用於定義給定對象的子項的渲染順序 - 但是,「深度」值並不適用於它看起來的「全局」級別。所以我認爲*即使「p」有兩個深度爲1的對象,你可以有兩個對象'o {depth:1}'和'p {depth:2}'和'o'hsa兩個深度爲1和2的孩子還有2個。這聽起來是對的嗎? –

相關問題