我一直在研究一個應用程序(與ComboBoxes),需要根據屏幕分辨率縮放整個應用程序。我認爲這將只是需要改變「的scaleX」和「的scaleY」的頂級應用程序的性能,但發現該組合框下拉菜單沒有出現相應地擴大,如下面的例子:ComboBox下拉縮放不遵循DisplayList
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
applicationComplete="init()">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
private var options:ArrayCollection = new ArrayCollection([1,2,3,4]);
public function init():void {
this.scaleX = 5;
this.scaleY = 5;
}
]]>
</mx:Script>
<mx:ComboBox id="box" dataProvider="{this.options}"/>
</mx:Application>
我已經能夠用它添加上一個組合框「的MouseEvent.MOUSE_DOWN」監聽器,並處理它,像這樣做的最好的:
var comboBox:ComboBox = event.currentTarget as ComboBox;
comboBox.dropdown.scaleX = 5; comboBox.dropdown.scaleY = 5;
導致出現下拉列表(向下滑動)未縮放直到達到擴展len並停止在這一點上它擴大並保持在那個規模,直到它關閉。我還發現,如果您在組合框或下拉列表中調用「invalidateDisplayList()」,則它將撤消縮放,所以無論何時調用updateDisplayList,下拉列表僅應用它的父級ComboBox縮放,而不是ComboBox的父級容器的縮放。
我明白,作爲彈出窗口,下拉不在應用程序或組合框的displayList樹中,這似乎是問題的根源(無雙關語意思)。
任何人有任何見解如何解決這個問題?
在此先感謝!