flex-拖放

时间:2011-04-14 19:27:26

标签: flex drag-and-drop flex4

我试图在SkinnableContainer上拖放一个对象 - 遇到一个非常奇怪的问题

仅在少数几个地方发生跌落 - 其他地方只是显示“X”符号并且在那里掉落,恢复到原始位置。我使用了非常标准的命令......从功能2到功能3,在跟踪语句中很少发生调用 - 为何会出现这种情况的指导?

我将以下代码添加到SkinnableContainer:dragEnter="dragEnterHandler(event);" dragDrop="dragDropHandler(event);

(1)

private function mouseMoveHandler(event:MouseEvent):void    
{
  var dragInitiator:Image = Image(event.currentTarget);   
  var ds:DragSource = new DragSource();    
  ds.addData(dragInitiator,"img"); //made change here    
  DragManager.doDrag(dragInitiator, ds, event);
}

(2)

private function dragEnterHandler(event:DragEvent):void {

if (event.dragSource.hasFormat("img"))
{
   trace("came here"); //comes here for each mouse move     
   DragManager.acceptDragDrop(SkinnableContainer(event.currentTarget));
}

(3)

private function dragDropHandler(event:DragEvent):void {    
trace("in drag drop handler"); //doesn't come here for most places

1 个答案:

答案 0 :(得分:2)

根据Using Flex 4参考:

  

要将容器用作放置目标,必须使用容器的backgroundColor属性来设置颜色。否则,容器的背景颜色是透明的,并且拖放管理器无法检测到鼠标指针位于可能的放置目标上。

在后面的示例中,他们使用mx容器(Canvas),但我检查了AS3引用,spark.components.SkinnableContainer确实有样式backgroundColor

我自己没试过,所以请确认是否是问题。根据您的描述,只有容器的某些部分正在注册dragEnter事件,这似乎是导致此类影响的考虑因素。