【问题标题】:Flex ItemRenderer: rendering the source item of a dragFlex ItemRenderer:渲染一个拖拽的源项
【发布时间】:2012-06-05 20:03:47
【问题描述】:

在默认实现中,当从列表中/在列表中拖动项目时,它在拖动过程中显示为选中(并且在dragging 状态下的单独项目渲染器显示为拖动图像),因此:

<s:ItemRenderer>
    <s:Label text="{data}" color.selected="0xFF0000" color.dragging="0x00FF00" />
</s:ItemRenderer>

呈现为:

有没有一种直接的方法可以在拖动期间将拖动源(红色、选中、“条形”)的状态更改为“选中”以外的状态?

理想情况下,我会将color.dragSource="0x0000FF" 添加到上面的项目渲染器代码中,“Bar”在选中时会显示为红色,但在开始拖动后会显示为蓝色。拖动完成后,它将恢复为红色(或者,如果不再选择,则恢复为黑色)。

【问题讨论】:

  • 列表不应该有办法改变所选项目的视觉显示吗?可能通过使用样式。
  • 我希望区分“已选择”和“当前正在拖动”,但有没有明确的区分方法?
  • 我不知道.. 假设列表只允许一个选择;您可以即时调整所选项目的样式。

标签: actionscript-3 apache-flex itemrenderer


【解决方案1】:

如果您在拖动开始时执行了一个 eventListener 将列表中的选定项目设置为 -1,该怎么办? -1 表示不应选择任何内容。

编辑:添加以下代码以支持:

<s:List id="myList" dragStart="startDrag(event)"/>

private var dragIndex:int;

private function startDrag(e:Event):void
{
    dragIndex = myList.selectedIndex;
    myList.selectedIndex = -1;
}

private function stopDrag(e:Event):void
{
    myList.selectedIndex = dragIndex;
}

【讨论】:

  • 首先将所选索引存储在 var 中可能是个好主意,这样在拖动停止时您可以恢复选择。
  • 好电话。对您的评论投了赞成票并添加到上面的示例代码中。
猜你喜欢
  • 2011-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多