Как предотвратить втягивание предметов дерева в себя? - PullRequest
0 голосов
/ 14 января 2010

У меня есть гибкое дерево с dragMoveEnabled = true. Я хочу выяснить, когда какой-то предмет втягивается в себя или это дети. Я хотел бы использовать DragManager.showFeedback (DragManager.NONE) в обработчике дерева onDragOver, но не могу узнать, как заставить это работать. Я использую ArrayCollection вложенных объектов в качестве источника данных для дерева.

Ответы [ 2 ]

1 голос
/ 15 января 2010
    private function onDragOver(event:DragEvent):void {
        event.preventDefault();
        event.currentTarget.hideDropFeedback(event);                

        var index:int = tree.calculateDropIndex(event);
        tree.selectedIndex = index;
        var subCategory:CategoryVO = CategoryVO(tree.selectedItem);

        var currentCategory:CategoryVO = subCategory;

        while(currentCategory.parent != 0) {
        if (currentCategory.parent == _draggedItem.id) {
            DragManager.showFeedback(DragManager.NONE);
            return;
        }
        currentCategory = tree.getParentItem(currentCategory);

        if (currentCategory == null) {
            break;
        }

        DragManager.showFeedback(DragManager.MOVE);
        tree.showDropFeedback(event);
   }

Вот так я и решил.

_draggedItem содержит текущий перетаскиваемый элемент, установленный в обработчике onDragEnter дерева. CategoryVO - это объект значения, который я использую.

0 голосов
/ 14 января 2010

вы можете сделать что-то вроде:

if(event.currentTarget == event.target){
    //item is being dropped on itself
}
...