0

我正在实现一个地图应用程序。它使用 Google Maps API for Flash。单击地图时会触发一个回调函数。此外,还有大量动态生成的折线。折线还分配了单击事件侦听器。问题是当我单击折线时,首先触发地图单击事件,然后触发折线的单击事件。

我无法解决那个问题。真的很烦人。下面是为地图的点击事件分配回调的代码:

map = new Map();
map.key = GOOGLE_MAP_KEY;
map.addEventListener(MapMouseEvent.CLICK, onMapClicked, true);

这是将回调函数分配给折线的点击事件的代码:

var polyline:Polyline = new Polyline(path);
polyline.addEventListener(MapMouseEvent.CLICK, cutToEnd);

当我单击折线时,我需要抑制“onMapClicked”函数的调用。只应调用“cutToEnd”方法。

谢谢

4

1 回答 1

0
map.addEventListener(MapMouseEvent.CLICK, onMapClicked, true);

您在此处使用 bubblingPhase(第三个“true”参数)。这意味着,当您单击折线时,事件首先“到达”您的地图,因为它正在从舞台捕获到您的按钮。设置参数“false”,或者只保留2个参数(useCapture默认为“false”)。然后在您的折线单击处理程序的末尾添加event.stopPropagation()方法调用。它会使事件停止冒泡,并且不会“到达”您的地图。

UDATE:如果 MapMouseEvent 没有冒泡,您可以比较event.targetevent.currentTarget属性。在您的折线点击侦听器中,它们将是相等的。所以你可以添加

 if(event.target != event.currentTarget)
    return;

在地图点击监听器的开头。

于 2011-02-23T19:29:49.103 回答