Flex 4 mx: мерцание HDividedBox с включенным liveDragging * только *, когда мышь находится над компонентом - PullRequest
1 голос
/ 15 апреля 2011

Я заметил, что HDividedBox "из коробки" имеет некоторые серьезные проблемы с мерцанием, когда liveDragging включена, , но только когда указатель находится над содержимым DividedBox при перетаскивании .Если вы схватите BoxDivider и переместите указатель с компонента во время перетаскивания, мерцание исчезнет, ​​и компонент будет правильно отображаться.

Я протестировал это как с моим настраиваемым компонентом, так и с очень простой реализацией HDividedBox с Group, SkinnableContainer.и BoxContainer дочерние, а также вложенные группы с отсечкой.Все типы детей проявляют одинаковое поведение.Если у кого-то есть обходной путь для этого, я был бы очень признателен за ввод !!

Большое спасибо, и вот фрагмент кода, который показывает мою проблему.

 <mx:HDividedBox width="500" height="200" liveDragging="true">
      <s:SkinnableContainer minWidth="0" backgroundColor="green" percentHeight="100"/>
      <s:SkinnableContainer minWidth="0" backgroundColor="blue" percentHeight="100"/>
      <s:SkinnableContainer minWidth="0" backgroundColor="yellow" percentHeight="100"/>
      <s:SkinnableContainer minWidth="0" backgroundColor="red" percentHeight="100"/>
 </mx:HDividedBox>

Спасибо,

Аарон

1 Ответ

0 голосов
/ 15 апреля 2011

Как бы забавно ни было перетянуть разделители и посмотреть, как ведет себя этот образец, я не испытывал никаких мерцающих проблем. Возможные объяснения:

  1. Скорость процессора - у меня быстрый процессор, некоторые могут не справиться с требуемым количеством перерисовок. Вы также можете работать с более сложными компонентами, которые сложнее рисовать, чем сплошные цвета.

  2. События мыши могут отправляться / обрабатываться несколько раз в используемых вами компонентах.

  3. Я испытывал некоторое «подергивание» делителя при случайном перемещении баров. Скорее всего, это связано с несколькими вычислениями компоновки, необходимыми для вычисления правильной ширины каждого разделенного блока на основе процентов, каждый раз, когда разделитель перемещается только на пиксель.

Редактировать: Запустите это и переместите разделители, чтобы получить представление о том, сколько изменений / перерисовок происходит из-за использования liveragging:.

<fx:Declarations>
    <fx:int id = "resizeCount">0</fx:int>
</fx:Declarations>


    <mx:HDividedBox 
        width = "500" height = "200"
        liveDragging = "true">
        <s:SkinnableContainer 
            minWidth = "0"
            percentHeight = "100"
            backgroundColor = "green"

            resize = "{trace(resizeCount);resizeCount++}" />
        <s:SkinnableContainer 
            minWidth = "0"
            percentHeight = "100"
            backgroundColor = "blue"

            resize = "{trace(resizeCount);resizeCount++}" />
        <s:SkinnableContainer 
            minWidth = "0"
            percentHeight = "100"
            backgroundColor = "yellow"

            resize = "{trace(resizeCount);resizeCount++}" />
        <s:SkinnableContainer 
            minWidth = "0"
            percentHeight = "100"
            backgroundColor = "red"

            resize = "{trace(resizeCount);resizeCount++}" />
    </mx:HDividedBox>

Это быстро проникает в сотни ... потом тысячи ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...