我试图在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
答案 0 :(得分:2)
根据Using Flex 4参考:
要将容器用作放置目标,必须使用容器的
backgroundColor
属性来设置颜色。否则,容器的背景颜色是透明的,并且拖放管理器无法检测到鼠标指针位于可能的放置目标上。
在后面的示例中,他们使用mx容器(Canvas
),但我检查了AS3引用,spark.components.SkinnableContainer
确实有样式backgroundColor
。
我自己没试过,所以请确认是否是问题。根据您的描述,只有容器的某些部分正在注册dragEnter
事件,这似乎是导致此类影响的考虑因素。