Flex: вращающиеся кнопки и изменение фокуса - PullRequest
1 голос
/ 26 августа 2010

У меня проблема с повернутыми кнопками во Flex.Кажется, они загрязняют прямоугольники фокусировки других компонентов.Возьмите следующий исходный код, который не может быть намного проще:

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:VBox width="100%" height="100%">
        <mx:Spacer height="100" />
        <mx:Button rotation="10" />
        <mx:TextArea rotation="0" />
    </mx:VBox>
</mx:WindowedApplication>

Теперь выполните его.Нажмите в текстовой области, прямоугольник фокуса правильный.Дважды нажмите клавишу Tab, прямоугольник фокуса вокруг поворота TextArea будет повернут!

Есть ли какое-то решение для этого, или мне следует вообще избегать вращения кнопок?

Я использую Flex SDK 3.5.

Спасибо,

Даниэль

Ответы [ 2 ]

2 голосов
/ 04 января 2011

Я также недавно наткнулся на эту ошибку. Вот ссылка на предлагаемое исправление .

Однако мне было интересно, есть ли более общее решение, чем расширение каждого компонента и переопределение AdjustFocusRect.

Я придумал расширить FocusManger и переопределить метод получения для focusPane следующим образом:

override public function get focusPane():Sprite
{
    var fp:Sprite = super.focusPane;
    if (fp && fp.numChildren != 0)
        fp.getChildAt(0).rotation = 0;

    return super.focusPane;
}

и установите его в качестве менеджера фокуса приложения:

private function onPreinitialize():void
{
    application.focusManager = new FocusManagerEx(this);
}

Кажется, это работает, хотя было бы неплохо, если бы какой-нибудь эксперт мог сказать, нет ли каких-либо ошибок, о которых я не знаю.

1 голос
/ 26 августа 2010

Похоже, ошибка в Flex SDK. Я вижу следующие варианты:

  • отключить прямоугольники фокуса с помощью focusSkin = "{null}"
  • создайте свой собственный скин и правильно обрабатывайте повороты
  • перейти к Spark, так как 3,5 является (в настоящее время) последний SDK третьего поколения
  • попробуй исправить это сам (чувствую, что будет сложно ...)

Кроме того, вы можете подать ошибку в трекере Adobe, но они глубоко в 4-м поколении Flex.

Обновление: эта ночная сборка также содержит 3.6.

...