Я работал над приложением (с ComboBoxes), которое требует масштабирования всего приложения в зависимости от разрешения экрана. Я думал, что это просто потребует изменения свойств «scaleX» и «scaleY» приложения верхнего уровня, но обнаружил, что раскрывающийся список ComboBox не масштабируется соответствующим образом, как в следующем примере:
<?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" в ComboBox и обработать его следующим образом:
var comboBox:ComboBox = event.currentTarget as ComboBox;
comboBox.dropdown.scaleX = 5; comboBox.dropdown.scaleY = 5;
, что приводит к тому, что выпадающий список (скользящий вниз) отображается немасштабированным до тех пор, пока не достигнет увеличенной длины и не остановится, в какой точке он масштабируется и остается в этом масштабе до тех пор, пока не будет закрыт. Я также обнаружил, что если вы вызываете «invalidateDisplayList ()» для comboBox или раскрывающегося списка, то это отменяет масштабирование, поэтому кажется, что всякий раз, когда вызывается updateDisplayList, раскрывающийся список применяет только масштабирование своего родительского ComboBox, а не родительский объект ComboBox масштабирование контейнера.
Я понимаю, что в качестве всплывающего окна раскрывающийся список не находится в дереве displayList приложения или ComboBox, которое, по-видимому, является корнем проблемы (без каламбура).
У кого-нибудь есть идеи относительно того, как решить эту проблему?
Заранее спасибо!