大家好日子。
我目前正在使用AS3 / Flex中的分层树结构,并希望在某些条件下启用拖放功能:
使用树的dragEnter事件,我能够轻松处理条件1。
private function onDragEnter(event:DragEvent):void
{
// only parent nodes (map layers) are moveable
event.preventDefault();
if(toc.selectedItem.hasOwnProperty("layer"))
DragManager.acceptDragDrop(event.target as UIComponent);
else
DragManager.showFeedback(DragManager.NONE);
}
处理第二个条件证明有点困难。我很确定dragOver事件是逻辑的地方。我一直在尝试使用calculateDropIndex,但这总是给我父节点的索引,这无助于检查潜在的丢弃位置是否可接受。下面是我想要完成的一些伪代码。
private function onDragOver(e:DragEvent):void
{
// if potential drop location has parents
// dont allow drop
// else
// allow drop
}
任何人都可以提供如何实施的建议吗?
答案 0 :(得分:1)
好的,不确定这个小窍子是否会对你有所帮助,但是当我用XML做到这一点时,我会得到放置目标的对象:
var r:int = dropTarget.calculateDropIndex(evt);
var node:XML = treeCurTemplate.indexToItemRenderer(r).data as XML;
然后我会将目标的localName与我拖动的项目的localName进行比较。 localName是我用来控制树分支的,所以这是有道理的。也许您可以使用它来找到某种方式来处理您的对象。