2013-05-28 2 views
0

플렉스 트리에서 드래그를 사용자 정의해야합니다. 이를 위해 나는 보호 기능 mouseDownHandler 무시했습니다플렉스 트리에서 사용자 정의 드래그 앤 드롭

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 픽셀 인 경우

  1. , 그라데이션 투명성이 나타납니다. 나는 그것을 필요로하지 않는다. 이 기능을 어떻게 비활성화 할 수 있습니까?
  2. 두 번째 문제는 덜 중요합니다. 즉, 트리 요소를 드래그하면 세로 스크롤이 발생합니다. 어떤 아이디어를 어떻게 비활성화 할 수 있습니까?

그라데이션 투명도 예 : Gradient transparency example

+0

"그래디언트 투명도가 나타납니다"란 의미는 무엇입니까? 오랜 시간이 걸렸지 만 올바르게 말하면 "드래그 아바타"(일명 "고스트")에는 알파 (투명도)가 적용되어 있습니다. 이것은 내가 생각하기에, 당신이 아이템을 끌고 있다는 시각적 신호입니다. 하지만 개체의 크기에 상관없이 투명하게 만들어야합니다. –

+0

"내 아바타 드래그"예제를 추가했습니다. – mpMelnikov

답변

0

당신은 verticalScrollPolicy "OFF"로 설정하여 verticalScrolling을 해제 할 수 있습니다.

"그라디언트"관련 : DragManager에서 사용자 정의 클래스로 드래그하기 위해 커서를 변경해보십시오.