1 拖动时不显示那条黑色横线。
样式中设定
tw|Tree{ dropIndicatorSkin: ClassReference("mx.skins.ProgrammaticSkin"); }
2 定制拖动时的提示显示方式
定制样式
tw|Tree{ dropIndicatorSkin: ClassReference("定制的类"); }
定制的类
public class AAA extends ProgrammaticSkin { public function AAA() { super(); } /** * @private */ override protected function updateDisplayList(w:Number, h:Number):void { super.updateDisplayList(w, h); if (!parent) { return; } var listBase:ListBase = parent.parent as ListBase; if (!listBase) { return; } var g:Graphics = graphics; g.clear(); g.lineStyle(2, 0x004400); g.drawRect(-5, -1, w, listBase.rowHeight); //g.drawRect(-5, -1, w, h); g.endFill(); // var g:Graphics = graphics; // // g.clear(); // g.beginFill(0xa1bde2, 0.5); // g.drawRect(-5, -1, w, 23); } } }
DRAG_OVER监听处理
tree.addEventListener(DragEvent.DRAG_OVER,function(evt:DragEvent):void{
if(evt.dragSource.hasFormat(OpViewConsts.DRAG_DRAGSOURC_FORMAT_TREEITEMS)){
if(接受拖动){
evt.preventDefault();
DragManager.acceptDragDrop(tree);
tree.showDropFeedback(evt);
}else{
evt.preventDefault();
tree.hideDropFeedback(evt);//没有这一行的话,在不接受DROP事件的节点处,定制显示的那个框将无法隐藏而停留在别的可接受DROP事件的节点处。
}
}
});
3 定制节点是否可接收其它节点的代码(twaver里面有自己的实现,单纯扩展TreeItemRenderer还没法处理)
http://riashanghai.com/zh-hant/node/57