我有两个
mx:TileList
控件,用于批量编辑对象。第一个包含所有可用数据的集合,第二个包含当前批处理。两者都是必然的
ArrayCollections
,并使用tilleist控件的本机拖放功能将数据从一个
ArrayCollection
当一个物体被拖到另一个物体之间时。
我需要改变
currentState
当批次计数从
零
到
n
或
n
到
零
项目。基于
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事件已激发。
这次也会发生同样的事情:将新对象添加到batch arraycollection(batch.length=2),然后
拖曳完成
事件激发(运行这些跟踪),然后从源ArrayCollection中移除该对象。
案例3:
现在,我将把两个图像从批处理列表中拖回源列表中的原始位置。
batchList.dragComplete: batch.length=2
batchList.dragComplete: images.length=10
(预期:0,10)
我们可以看到batch.length没有下降,但是源图像数组回到了原来的长度10。
问题:
我做错什么了吗?还有别的事情我可以听吗?(
注:我都试过了
DragExit
和
DragDrop
我只是想确定一下,它们的行为和预期的一样,但不是我需要的。
)还是有其他方法来获取我想要的数据?或者…我在SDK中发现了一个bug吗?