flex(twaver) 树(tree)的元素拖动的定制显示及控制问题
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
?
?
?