2010-03-11 65 views
2

短版本:ComboBox的下拉菜單在全屏顯示之前正常工作並呈現,但不會在顯示期間或之後顯示。如何修復全屏幕下的ComboBox下拉問題?

我不完全確定如何提出這個問題,所以我實際上製作了a page demonstrating the error,帶有一個非常簡單的Flex應用程序,以及您需要親自體驗問題的所有三個方向。

對於那些不敢遵循我上面的鏈接的人,我會盡力在這裏解釋。我已經構建了一個相當廣泛的Flex應用程序(不是鏈接中的應用程序),它具有一些圖表,圖表和複選框以及這些圖表的其他控件。在幾個應用程序狀態的應用程序底部,有一個ComboBox(如HTML中的<select>標記)。因爲這是最底層的,所以當你點擊它來訪問它的下拉菜單時,Flex若有所思地將它從頂端出來。

這適用於全屏模式。進入全屏後,我用stage.scaleMode = StageScaleMode.SHOW_ALL對所有東西進行縮放。現在,當您點擊ComboBox時,下拉菜單非常大,實際上會下降到ComboBox以下,導致其大部分消失在屏幕外。最好的部分是,一旦你退出全屏模式,下拉菜單堅持繼續降到位於應用底部的ComboBox以下,並繼續被切斷。有沒有其他人遇到這個野獸,盯着它的大肚腩,並獲得勝利?

您可以從鏈接中的查看源代碼獲取代碼,並非常感謝您的時間。

+0

我認爲這是因爲ComboBox將其List組件直接放置在舞臺上。找到一種方法來強制它將List放入其中,並且已經解決了這個問題。如果你成功了,請回答你的問題,讓每個人都知道。 – webwise 2010-05-05 11:42:41

+0

+1這樣一個偉大的問題演示。 – invertedSpear 2010-05-17 19:35:55

+0

到目前爲止,我的解決方法是簡單地通過'position'將樣式下拉到ComboBox上方。不理想,但至少可讀。 我一直在試圖通過報告錯誤並在FlexCoders論壇上進行交流來獲得Adobe對此的關注。到目前爲止,他們的建議是重寫呈現ComboBox的類工廠。從本質上講,他們希望我自己重寫ComboBox。謝謝,Adobe。 – Impirator 2010-05-25 20:19:23

回答

0

我有一些CB的下拉問題,似乎有點不相關,但我不得不直接將更改應用到像myCombo.drowpdown.[insert whatever property]這樣的下拉菜單,因爲它沒有將對組合框所做的更改應用到下拉菜單。也許你可以在你的應用中嘗試一下,看看它是否有幫助。

1

我有一個問題的一小部分的解決方法,加上一些細節爲什麼問題的其他部分正在發生。也許別人可以找出其餘的。

首先,一般注意

一個Flex 3.5組合框使用下面的布爾表達式(系1572年至1573年),以確定是否應該把它的下拉列表中爲下降列表:

point.y + _dropdown.height > screen.bottom && 
point.y > screen.top + _dropdown.height 

其中point.y是ComboBox底部的全局座標。基本上,「如果它會觸底,不會打到頂部,那麼......」。否則,如果它也將達到頂端,那麼它默認回到扔在地板上的東西,正如我們現在看到的那樣。考慮到這一點...

一個部分解決方法

我能夠恢復應用到其正常的功能,一旦它通過添加以下代碼到toggleFullscreen()按鈕處理程序退出全屏模式,走出來的全屏模式時:

... 
    screen.height = height; 
    screen.width = width; 

    myComboBox.dropdown.invalidateSize(); // myComboBox being the id for the ComboBox 
} 

說明:有一件事情正在發生(可能是別的東西的作用)是在的screen屬性值未正確重置。所以,當從上面的布爾語句被評估時,它仍然使用全屏值,並因此一直在地板上放下列表。此代碼只是手動重置屏幕並重新計算下拉列表的大小。

這並不多,但至少它是某種東西。否則......

的Full Screen問題

一些細節我注意到兩個問題會在這裏:

  1. 當從上面布爾表達式以全屏模式進行評估,一些這些值是縮放的,而有些則不是。即,point.y_dropdown.height是未縮放的,而screen.bottom是縮放的(相對)。所以,表達式的第一部分總是出現錯誤,因此ComboBox繼續渲染列表,儘管實際上沒有空間。我不知道爲什麼會發生這種情況,但事實確實如此。我試圖無效地間接操縱這些價值而沒有不良後果,但我也有一種感覺,即使我得到了正確評價的表達,它也不能解決其他問題...
  2. 事實上,當下降下降列表呈現它看起來像是雙倍縮放。也就是說,而不是ComboBox在我的顯示器上的3.5倍縮放,下拉列表看起來像3.5 * 3.5縮放。我沒有玩這個遊戲,但我會說,當我手動應用轉換矩陣來未縮放ComboBox時,下拉列表呈現的大小看起來像匹配原始大小(全屏縮放) 組合框。也許別人可以搞砸這個。

這就是我得到的。我並不完全相信玩轉換的解決方案不會去任何地方,但如果編寫自己的定製dropDownFactory將解決問題,至少我會說我確信它不那麼乏味。

祝你好運。