Я выполняю операцию перетаскивания в дереве, используя некоторую помощь из краткого руководства Adobe:
http://www.adobe.com/devnet/flex/quickstart/working_with_tree/
Предлагаемый код примерно такой:
var dropTarget:Tree = Tree(evt.currentTarget);
var i:int = dropTarget.calculateDropIndex(evt);
myTree.selectedIndex = i;
var node:XML = myTree.selectedItem as XML;
var drugXML:XML = XML(Tree(evt.dragInitiator).selectedItem);
if(node.localName() != drugXML.localName()){
DragManager.showFeedback(DragManager.NONE);
return;
}else{
DragManager.showFeedback(DragManager.COPY);
}
Это все хорошо, но мне не нравится, как он выбирает (выделяет) каждый элемент дерева, на который я перетаскиваю, не совсем понятно, куда этот предмет упадет. Я хочу реализовать это без выбора, но, похоже, нет способа получить XML узла, используя только индекс. Я хотел бы что-то вроде этого:
var dropTarget:Tree = Tree(evt.currentTarget);
var i:int = dropTarget.calculateDropIndex(evt);
var node:XML = myTree.itemAt(i) as XML;
//AFAIK itemAt(i) or anything like it does not exist
var drugXML:XML = XML(Tree(evt.dragInitiator).selectedItem);
if(node.localName() != drugXML.localName()){
DragManager.showFeedback(DragManager.NONE);
return;
}else{
DragManager.showFeedback(DragManager.COPY);
}
Кто-нибудь знает, что такое функция или что я могу сделать, чтобы расширить дерево, чтобы оно имело функцию, например, "itemAt (i)"
Спасибо
~ Mike
РЕДАКТИРОВАТЬ: я забыл опубликовать, что мой текущий обходной путь устанавливает selectedIndex = -1 после того, как я получу свой узел: XML. Боюсь, что если что-то застряло на процессоре, пользователь может увидеть, что оно выбрано, а затем отмените выбор.