У меня есть обходной путь для незначительной части проблемы, а также некоторые подробности того, почему происходит другая часть проблемы. Может быть, кто-то еще может выяснить остальное.
Сначала общее примечание
Flex 3.5 ComboBox использует следующее логическое выражение (строки 1572-73), чтобы определить, следует ли превратить его выпадающий список в выпадающий список up :
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
в systemManager
не сбрасывались должным образом. Таким образом, когда этот логический оператор сверху был оценен, он все еще использовал полноэкранные значения и, следовательно, продолжал отбрасывать список через пол. Этот код просто сбрасывает экран вручную и пересчитывает размер выпадающего списка.
Это не так много, но, по крайней мере, это что-то. В противном случае ...
Некоторые сведения о проблеме с полноэкранным режимом
Я заметил две проблемы, происходящие здесь:
- Когда это булево выражение сверху вычисляется в полноэкранном режиме, некоторые значения масштабируются, а некоторые нет. А именно,
point.y
и _dropdown.height
не масштабируются, тогда как screen.bottom
масштабируется (относительно). Итак, первая часть выражения всегда получается ложной, и, таким образом, ComboBox продолжает выводить список вниз, даже если на самом деле места нет. Я понятия не имею, почему это происходит, но это так. Я пытался бесполезно манипулировать этими значениями косвенно без негативных последствий, но у меня также было ощущение, что даже если бы я получил выражение для правильной оценки, это не решило бы другую проблему ...
- Тот факт, что когда рендерится выпадающий список down , это выглядит так, как будто он был дважды масштабирован. То есть вместо масштабирования 3,5, которое было у ComboBox на моем мониторе, выпадающий список выглядел так, как будто он имеет масштабирование 3,5 * 3,5. Я не слишком много играл с этим, но скажу, что когда я вручную применил матрицу преобразования для отмены масштабирования ComboBox, размер, при котором выпадающий список отображался, соответствовал оригиналу (в полноэкранном режиме). ) Поле со списком. Может быть, кто-то еще может возиться с этим.
Это насколько я понял. Я не совсем уверен, что решение, играющее с преобразованиями, никуда не денется, но если написание вашего собственного пользовательского dropDownFactory
решит проблему, я по крайней мере скажу, что уверен, что это будет менее утомительно .
Удачи.