我做一拖,並使用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
編輯:我忘了發佈我目前的解決方法是在獲取我的節點:XML後設置selectedIndex = -1。我擔心,如果處理器上出現問題,用戶可能會看到它,然後取消選擇。
只要你停留在單線程中(並且不觸發任何validateNows),我認爲你對視覺反饋是安全的--Flex框架將不會有機會更新UIComponent。 – 2010-01-20 18:49:50
我已經看到其他人提到線索,我不知道他們指的是什麼,在這個意義上什麼是線程,我將如何產生另一個,或確保我只在一個?我要發佈另一個問題... – invertedSpear 2010-01-20 19:41:54