apache-flex - Flex 拖放 : Detecting when all data has been moved from source to destination

标签 apache-flex events flex3 event-handling

我有两个 mx:TileList 控件,用于批量编辑对象。第一个包含所有可用数据的集合,第二个包含当前批处理。两者都绑定(bind)到 ArrayCollections,并且使用 TileList 控件的 native 拖放功能,当在一个 ArrayCollections 之间拖动对象时,数据会从一个 ArrayCollections 移动到另一个他们。

当批处理计数从 0 变为 n 时,我需要更改 currentState 以显示并重置批处理操作控件>n0 项。基于the documentation ,我本以为我应该监听 dragComplete 事件,但我的测试表明,它不是在数据从源 ArrayCollection 中删除并添加到目标 ArrayCollection 后触发,而是触发(始终如一) )在这两个操作之间。

两个列表都与此类似:

<mx:TileList 
    id="srcList" 
    dragEnabled="true" 
    dropEnabled="true" 
    dragMoveEnabled="true" 
    dataProvider="{images}"
    dragComplete="handleDragComplete(event)"
    allowMultipleSelection="true"
/>

这是handleDragComplete函数的源代码:

private function handleDragComplete(e:DragEvent):void{
    trace(e.dragInitiator.name + '.dragComplete: batch.length=' + batch.length.toString());
    trace(e.dragInitiator.name + '.dragComplete: images.length=' + images.length.toString());
    if (batch.length > 0){
        currentState = 'show';
    }else{
        currentState = '';
    }
}

最后,这是运行代码的一些示例输出。这些都是一个接一个地运行的。

情况1:

应用程序在第一个列表中加载 10 个对象,但批处理为空。我将 1 个对象从源列表拖到批处理列表。

srcList.dragComplete: batch.length=1
srcList.dragComplete: images.length=10

(预期:1,9)

显然,该对象已添加到批处理 ArrayCollection 中,但并未从源中删除。

情况2:

现在,我将第二个对象拖入批处理中。

srcList.dragComplete: batch.length=2
srcList.dragComplete: images.length=9

(预期:2,8)

首先,我们可以看到 images.length 发生了变化,这表明我从源列表拖动到批处理列表的对象在 DragComplete 事件触发后被删除了。

这次发生了同样的事情:新对象被添加到批处理 ArrayCollection (batch.length=2) 中,dragComplete 事件触发(运行这些跟踪),然后该对象被删除来自源 ArrayCollection。

情况3:

现在,我将把批处理列表中的两个图像拖回源列表中的原始位置。

batchList.dragComplete: batch.length=2
batchList.dragComplete: images.length=10

(预期:0,10)

我们可以看到batch.length并没有减少,但是源图像数组又回到了原来的长度10。

问题:我做错了什么吗?还有其他我可以收听的事件吗? (注意:我尝试了 DragExit DragDrop,只是为了确定,它们的行为如下预期的,但不是我需要的。)或者还有其他方法来获取我想要的数据吗?或者...我在 SDK 中发现了错误吗?

最佳答案

您可以监听目标 ArrayCollections 上的 collectionChange 事件吗?

batch.addEventListener(CollectionEvent.COLLECTION_CHANGE, handleBatchCollectionChange);

关于apache-flex - Flex 拖放 : Detecting when all data has been moved from source to destination,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1520830/

相关文章:

apache-flex - Flex 字体渲染从 4.1 到 4.5 的差异

apache-flex - 如何解决Adobe Flex错误: “Error #2036: Load Never Completed” ?

c++ - 在 Mac OS X 上模拟鼠标点击对某些应用程序不起作用

database - flex 独立应用程序使用哪个数据库?

apache-flex - Flex 中数组和数组集合的区别

apache-flex - ActionScript :未定义的公共(public)变量?

java - ExceptionTranslator 的异常不会返回到 flex

css - 组件状态的 Adob​​e Flex 设置样式

java - Java Swing 中带有自定义事件的接口(interface)之后的 .class

JAVA表单检测变化