Немногие пользователи моего веб-приложения Flex 4.6 жалуются на то, что mx.controls.PopUpButton в правом нижнем углу иногда открывает список под и, следовательно, его невозможно использовать (я не могу воспроизвестичто я - возможно, неудачная комбинация их Flash-плеера и / или размера шрифта?)
Как я могу убедиться, что компонент popUp (в моем случае это spark.components.List) всегда открывается выше the PopUpButton?
Я подозреваю, что мне следует создать скин на основе mx.skins.halo.PopUpButtonSkin и назначить его для моего PopUpButton?И мне, вероятно, следует использовать константу PopUpPosition.ABOVE вместе с PopUpAnchor?
Но я не уверен, как ее собрать - может кто-нибудь поделиться некоторыми инструкциями?
Я подготовилскриншот и простой Text.mxml:
<?xml version="1.0" encoding="utf-8"?>
<s:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
creationComplete="init()">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
import mx.collections.ArrayCollection;
import spark.components.List;
[Bindable]
private var _data:ArrayCollection = new ArrayCollection();
[Bindable]
private var _list:List = new List();
public function init():void {
_data.addItem({label: "One"});
_data.addItem({label: "Tow"});
_data.addItem({label: "Three"});
_data.addItem({label: "Four"});
_data.addItem({label: "Five"});
_list.dataProvider = _data;
_list.setStyle('fontSize', 36);
}
]]>
</fx:Script>
<mx:PopUpButton right="10" bottom="10" fontSize="24" popUp="{_list}"/>
</s:Application>
ОБНОВЛЕНИЕ:
Я нашел решение от Саймона Бэйли MX ComboBox Open Direction Bug - Альтернативное решение и это вроде работает, но, к сожалению, мешает мне отправлять мое пользовательское событие, когда нажата основная кнопка (не стрелка).
Также япосмотрел на исходный код PopUpButton.as и подумал, может быть, высота списка равна 0, пока он там проверяется:
private function displayPopUp(show:Boolean):void
{
......
// XXX I suspect the _popUp.height below is 0
// XXX for the users having the trouble
if (show)
{
if (point.y + _popUp.height > screen.bottom &&
point.y > (screen.top + height + _popUp.height))
{
// PopUp will go below the bottom of the stage
// and be clipped. Instead, have it grow up.
point.y -= (unscaledHeight + _popUp.height + 2*popUpGap);
initY = -_popUp.height;
}
Я все еще не могу воспроизвести ошибку самостоятельноМои пользователи не очень полезны (в основном пожилые люди, играющие в мою карточную игру ).Я искал в Adobe JIRA , но не смог найти такую ошибку.
Интересно, есть ли способ замкнуть этот метод, чтобы принудительно открыть всплывающее окно надPopUpButton.
Или, если я должен поместить _list в какой-то контейнер ...