Apache flex flex-拖放

Apache flex flex-拖放,apache-flex,drag-and-drop,flex4,Apache Flex,Drag And Drop,Flex4,我试图在SkinnableContainer上拖放一个对象-遇到了一个非常奇怪的问题 下降只发生在少数地方——在其他地方,它只显示“X”符号,下降时,会恢复到原始位置。我使用了非常标准的命令。。。从函数2到函数3,调用很少出现在跟踪语句中——关于为什么会发生这种情况有什么指导吗 我向SkinnableContainer添加了以下代码:dragEnter=“dragEnterHandler(事件);”dragDrop=“dragDropHandler(事件); (1): private funct

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

下降只发生在少数地方——在其他地方,它只显示“X”符号,下降时,会恢复到原始位置。我使用了非常标准的命令。。。从函数2到函数3,调用很少出现在跟踪语句中——关于为什么会发生这种情况有什么指导吗

我向SkinnableContainer添加了以下代码:
dragEnter=“dragEnterHandler(事件);”dragDrop=“dragDropHandler(事件);

(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);
}
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));
}
private function dragDropHandler(event:DragEvent):void {    
trace("in drag drop handler"); //doesn't come here for most places
(2)

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);
}
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));
}
private function dragDropHandler(event:DragEvent):void {    
trace("in drag drop handler"); //doesn't come here for most places
(3)

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);
}
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));
}
private function dragDropHandler(event:DragEvent):void {    
trace("in drag drop handler"); //doesn't come here for most places
根据参考资料:

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

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


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

您没有显示有关拖动开始位置的代码。问题到底是什么我从你的帖子中得到的是,你想知道为什么2个函数只被调用“非常罕见”“我知道我的问题的框架很差——想不出更好的方法来框架不一致的行为。。。无论如何,Merv在Moneyes上是正确的-一旦我给skinnable容器添加了背景色,下拉菜单的行为是非常一致的