【问题标题】:flex tree gets chopped even after using scroll bar即使使用滚动条,flex树也会被砍断
【发布时间】:2011-08-17 04:49:18
【问题描述】:

当我使用以下树渲染器类时,树中的信息会被砍掉。有什么办法可以修复这个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. 

)

请帮助我。非常感谢。

【问题讨论】:

  • 请随时询问更多信息。
  • 当我移动树的水平滚动条时,树视图中的变量会完全显示出来。但是当我移动垂直滚动条时,新查看的变量会被砍掉。
  • 为什么没有人回复我的帖子?有什么问题吗,请告诉我问题..
  • 这不是一个简单的问题。当网站奖励快速简单的答案而不是复杂复杂的答案时,这就是您所得到的。无论如何:您可能想要描述您想要实现的 Tree 的行为。可能有更简单的解决方案。
  • 当我使用滚动条滚动时一切正常,但是当我使用鼠标滚轮滚动时,树被砍断了。我不希望我的树被砍断。请帮助我。也可以查看link查看bug预览

标签: apache-flex actionscript-3 custom-controls horizontal-scrolling treeviewitem


【解决方案1】:

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

查看http://www.developria.com/2009/12/handling-delayed-instantiation-1.html 了解更多详细信息和修复。

【讨论】:

    【解决方案2】:

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

    override protected function mouseWheelHandler(eventMouse:MouseEvent):void
         {      if (mx_internal::isOpening)
                return;
    
            if (eventMouse is MouseEvent){          
                super.mouseWheelHandler(eventMouse);
                invalidateDisplayList();
            }
         }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-04
      • 1970-01-01
      • 2021-10-05
      • 1970-01-01
      • 1970-01-01
      • 2013-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多