гибкое дерево рубится даже после использования полосы прокрутки - PullRequest
1 голос
/ 17 августа 2011

когда я использую следующий класс рендерера дерева, информация в дереве рубится. Есть ли решение, чтобы исправить эту ошибку. Помогите мне, пожалуйста. Класс PLTree выглядит следующим образом:

import flash.events.Event;
    import mx.events.ScrollEvent;
    import mx.controls.Tree;
    import mx.core.ScrollPolicy;
    import mx.core.mx_internal;
    import mx.events.TreeEvent;

    public class PLTree extends Tree
    {
        private var _lastWidth:Number = 0;
        private var _lastHeight:Number = 0;
        public function PLTree() {
            super();
            horizontalScrollPolicy = ScrollPolicy.AUTO;
        }       
       override public function get maxHorizontalScrollPosition():Number
       {
            return mx_internal::_maxHorizontalScrollPosition;
       }     
       override public function set maxHorizontalScrollPosition(value:Number):void
       {
            mx_internal::_maxHorizontalScrollPosition = value;
            dispatchEvent(new Event("maxHorizontalScrollPositionChanged"));      
            scrollAreaChanged = true;
            invalidateDisplayList();
       }      
       override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
       {
            var diffWidth:Number = measureWidthOfItems(0,0) - (unscaledWidth - viewMetrics.left - viewMetrics.right);

            if (diffWidth <= 0) {
                maxHorizontalScrollPosition = 0;
                horizontalScrollPolicy = ScrollPolicy.OFF;
            } else {
                maxHorizontalScrollPosition = diffWidth;
                horizontalScrollPolicy = ScrollPolicy.ON;
            }
            super.updateDisplayList(unscaledWidth, unscaledHeight);
       }
    override protected function scrollHandler(event:Event):void
    {
        if (mx_internal::isOpening)
            return;

        // TextField.scroll bubbles so you might see it here
        if (event is ScrollEvent){

            super.scrollHandler(event);
            invalidateDisplayList();
        }
    }   
}

Я прилагаю файл изображения о том, как он выглядит при выполнении. enter image description here

При серфинге с помощью Google я нашел предложение, чтобы исправить эту ошибку, это правильный путь? (

Issue: Text getting chopped of at end.
Fix: change
maxHorizontalScrollPosition = diffWidth;
to
maxHorizontalScrollPosition = diffWidth + 10;
or what ever correction factor you need. 

)

Пожалуйста, помогите мне. Большое спасибо заранее.

Ответы [ 2 ]

0 голосов
/ 01 сентября 2011

аналогично обработчику прокрутки в вышеупомянутой программе. Используйте обработчик прокрутки колеса мыши для обработки этого события следующим образом:

override protected function mouseWheelHandler(eventMouse:MouseEvent):void
     {      if (mx_internal::isOpening)
            return;

        if (eventMouse is MouseEvent){          
            super.mouseWheelHandler(eventMouse);
            invalidateDisplayList();
        }
     }
0 голосов
/ 17 августа 2011

Глядя на ваше изображение, я подозреваю, что проблема не имеет ничего общего с конкретным деревом и лишь незначительно связана с средством визуализации.Вместо этого я думаю, что при создании контейнера, содержащего дерево, он не имеет размера, а когда дерево определяет размеры своих средств визуализации, он дает им неправильный размер.Поскольку элементы управления на основе списков не устанавливают фактическую ширину для средств визуализации, выбирая вместо этого установку clearWidth, средства визуализации не запускаются при изменении их размера.

Проверьте http://www.developria.com/2009/12/handling-delayed-instantiation-1.html для получения более подробных сведений.и исправления.

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