flex(twaver) 树(tree)的元素拖动的定制显示及控制有关问题

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