2013-05-28 72 views
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; 
} 

但我面臨兩個問題:

  1. 如果我的鬼的寬度或高度超過300像素,漸變透明度出現就可以了。我不需要它。我怎麼能禁用這個功能?
  2. 第二個問題不那麼重要:拖動樹元素會導致垂直滾動。任何想法如何禁用它?

漸變透明度例如: Gradient transparency example

+0

你能描述一下「漸變透明度」是什麼意思?這已經很長時間了,但是如果我記得正確的話,「拖拽虛擬形象」(aka avatar)(又名「幽靈」)有一個alpha(透明度)適用於它。我相信,這是一個你拖動項目的視覺提示。但我希望它不管對象的大小如何都應該是透明的。 –

+0

我已經添加了一個「拖動頭像」的例子。 – mpMelnikov

回答

0

你可以通過設置verticalScrollPolicy爲 「off」 禁用verticalScrolling。

關於「漸變」的東西:嘗試更改光標在DragManager中拖動到一些自定義類。