我一直在研究一个应用程序(与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树中,这似乎是问题的根源(无双关语意思)。
任何人有任何见解如何解决这个问题?
在此先感谢!