1

当我使用以下树渲染器类时,树中的信息被砍掉了。有什么办法可以修复这个bug。请帮我。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();
        }
    }   
}

我附上了执行时外观的图像文件。 在此处输入图像描述

使用谷歌冲浪时,我发现了修复此错误的建议,这是正确的方法吗?(

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

)

请帮助我。非常感谢。

4

2 回答 2

0

看你的图片,我怀疑这个问题与特定的树无关,只是与渲染器略有关系。相反,我认为当创建包含 Tree 的容器时,它没有大小,并且当 Tree 调整其渲染器的大小时,它会给它们错误的大小。由于基于列表的控件不会在渲染器上设置实际宽度,因此选择设置显式宽度,因此不会触发渲染器更改其大小。

查看http://www.developria.com/2009/12/handling-delayed-instantiation-1.html以获得更明确的细节和修复。

于 2011-08-17T13:26:34.097 回答
0

类似于上述程序中的滚动处理程序。使用鼠标滚轮滚动处理程序来处理该事件,如下所示:

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

        if (eventMouse is MouseEvent){          
            super.mouseWheelHandler(eventMouse);
            invalidateDisplayList();
        }
     }
于 2011-09-01T07:22:30.163 回答