0
我必须自定义从Flex树拖动。对于我已经覆盖了保护功能mouseDownHandler
:在Flex树中自定义拖放
override protected function mouseDownHandler(event:MouseEvent):void
{
if (event.target is ScrollThumb || event.target is Button)
{
return;
}
super.mouseDownHandler(event);
var tree:Tree = Tree(event.currentTarget);
if (tree.selectedItem && tree.indexToItemRenderer(tree.selectedIndex) && tree.selectedItem is Image)
{
var image:Image = Image(tree.selectedItem);
var source:DragSource = new DragSource();
var dragView:Image = new Image();
dragView.source = drawGhost(image);
var dragInitiator:UIComponent = UIComponent(tree.indexToItemRenderer(tree.selectedIndex));
var ghostOffset:Point = dragInitiator.globalToLocal(new Point(event.stageX, event.stageY));
DragManager.doDrag(dragInitiator, source, event, dragView, ghostOffset.x, ghostOffset.y, 1);
}
}
private function drawGhost(image:Image):Bitmap
{
var ghostWidth:int = image.source.width;
var ghostHeight:int = image.source.height;
var sprite:Sprite = new Sprite();
sprite.graphics.beginFill(0xFF0000, 0.5);
sprite.graphics.drawRect(0, 0, ghostWidth, ghostHeight);
sprite.graphics.endFill();
var bitmapData:BitmapData = new BitmapData(sprite.width, sprite.height, false);
bitmapData.draw(sprite);
var bitmap:Bitmap = new Bitmap(bitmapData);
return bitmap;
}
但我面临两个问题:
- 如果我的鬼的宽度或高度超过300像素,渐变透明度出现就可以了。我不需要它。我怎么能禁用这个功能?
- 第二个问题不那么重要:拖动树元素会导致垂直滚动。任何想法如何禁用它?
渐变透明度例如:
你能描述一下“渐变透明度”是什么意思?这已经很长时间了,但是如果我记得正确的话,“拖拽虚拟形象”(aka avatar)(又名“幽灵”)有一个alpha(透明度)适用于它。我相信,这是一个你拖动项目的视觉提示。但我希望它不管对象的大小如何都应该是透明的。 –
我已经添加了一个“拖动头像”的例子。 – mpMelnikov