【问题标题】:How can I force a tree itemrenderer to redraw during a drag and drop operation?如何在拖放操作期间强制树 itemrenderer 重绘?
【发布时间】:2010-06-11 21:14:01
【问题描述】:

我有一个带有自定义项渲染器的树控件。项目渲染器具有不同的状态,当将项目拖到项目渲染器上时应设置这些状态。我通过阅读这篇文章http://forums.adobe.com/message/2091088 了解到,这样做的“正确方法”是覆盖“getCurrentState”方法并附加一些文本。我这样做。

现在,在我的树控件中,我处理拖动事件并获取对被拖动的 itemrenderer 的引用,并将布尔值“dragOver”属性设置为 true。现在我只需要强制我的 itemRenderer 重绘。我想不通。一种解决方法是只设置 itemRenderer 的 currentState。

那么我的问题是,如何强制我的 itemRenderer 刷新? (并且我尝试调用 validateNow,invalideDisplayList/Properties/Size,但无济于事)

<?xml version="1.0" encoding="utf-8"?>
<s:MXTreeItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    xmlns:mx="library://ns.adobe.com/flex/mx">

    <fx:Script>
        <![CDATA[           
            import mx.events.DragEvent;
            import mx.events.FlexEvent;

            import spark.layouts.supportClasses.DropLocation;

            public var dragOver:Boolean = false;

            override protected function getCurrentRendererState():String
            {

                var skinState:String = super.getCurrentRendererState();

                if( dragOver )
                    skinState += "AndDragOver";

                trace('getCurrentRendererState', skinState);
                return skinState;
            }

        ]]>
    </fx:Script>

    <s:states>
        <s:State name="normal" />            
        <s:State name="hovered" />
        <s:State name="selected" />
        <s:State name="normalAndDragOver" stateGroups="dragOverGroup" />            
        <s:State name="hoveredAndDragOver" stateGroups="dragOverGroup" />
        <s:State name="selectedAndDragOver" stateGroups="dragOverGroup" />
    </s:states>

...

【问题讨论】:

    标签: apache-flex drag-and-drop tree flex4 itemrenderer


    【解决方案1】:

    Tree 是 ListBase 对象,因此请尝试调用 treeObject.invalidateList()。

    可能有一种更有效的方式单独与 itemRenderer 相关,但是 invalidateList() 已经解决了我过去所有的 ListBase 渲染问题。

    【讨论】:

    • 不...似乎不起作用。我的预感是拖放干扰(dragEnabled、dropEnabled、dragMoveEnabled 全部为真)。树有一个 dropIndicator ......但我需要项目渲染器来显示它们的视觉状态。我要去看看 Adob​​e 的 jira,看看有没有发现什么。
    猜你喜欢
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多