2009-08-17 61 views
1

我有这个HBox中使用拖放功能:下降与HBox

SCRIPT:

// The dragEnter event handler for the HBox container enables dropping. 
private function dragEnterHandler(event:DragEvent):void 
{ 
    if (!event.dragSource.hasFormat("items")) 
     return; 

    var dropTarget:Box = Box(event.currentTarget); 
    dropTarget.setStyle("borderStyle", "outset"); 

    DragManager.acceptDragDrop(dropTarget); 
    DragManager.showFeedback(DragManager.MOVE); 
} 

private function dragExitHandler(event:DragEvent):void 
{ 
    if (!event.dragSource.hasFormat("items")) 
     return; 

    var dropTarget:Box = Box(event.currentTarget); 
    dropTarget.setStyle("borderStyle", "inset"); 
} 

MXML

<mx:HBox id="invoiceHBox" borderStyle="inset" borderThickness="3" 
    height="40" width="260" 
    dragEnter="{dragEnterHandler(event);}" 
    dragExit="{dragExitHandler(event);}" 
    dragDrop="{dragDropHandler(event);}"> 
    <mx:VBox> 
     <mx:Image source="{MailIcon32}" visible="{Boolean(invoiceEmail)}" /> 
     <mx:Label text="{invoiceEmail.name}" styleName="heading4" /> 
     <mx:Text text="{invoiceEmail.description}" 
      width="100%" selectable="false" /> 
    </mx:VBox> 
</mx:HBox> 

当鼠标进入HBox中,它工作正常。数据可以放入HBox中,dragDropHandler函数(一个很长的函数)可以完成它的工作。

但是,当鼠标悬停在VBox上时,丢弃功能会丢失。 VBox容器能以某种方式继承HBox吗?还是有另一种解决这个问题的方法?

谢谢!

回答

0

你需要禁用HBox中的mouseChildren属性,它应该工作

<mx:HBox id="invoiceHBox" borderStyle="inset" borderThickness="3" 
    height="40" width="260" 
    dragEnter="{dragEnterHandler(event);}" 
    dragExit="{dragExitHandler(event);}" 
    dragDrop="{dragDropHandler(event);}" 
    mouseChildren="false" > 
    <mx:VBox> 
     <mx:Image source="{MailIcon32}" visible="{Boolean(invoiceEmail)}" /> 
     <mx:Label text="{invoiceEmail.name}" styleName="heading4" /> 
     <mx:Text text="{invoiceEmail.description}" 
      width="100%" selectable="false" /> 
    </mx:VBox> 
</mx:HBox>