API は、必ずしも独自のイベントをディスパッチしているわけではありません。たとえそうであっても、最初に MouseEvents をリッスンする必要があります。MouseEvent.DOUBLE_CLICK
を使用するか、連続するMouseEvent.CLICK
またはMouseEvent.MOUSE_DOWN
イベントをリッスンすることで、ダブルクリックを検出できます。これらのイベントの 1 つまたは複数をどこかでリッスンせずにダブルクリックを検出する方法は (Flash 内だけで) ありません。
マップ サービスが DOUBLE_CLICK イベントをリッスンしている可能性もありますが、正しいオブジェクトから MouseEvent をディスパッチしていません。たとえば、マップ サービスがこれを行うとします。
mapRoot.mapChild.addEventListener(MouseEvent.DOUBLE_CLICK, performMeasurement);
そしてあなたはこれをします:
mapRoot.dispatchEvent(new MouseEvent(MouseEvent.DOUBLE_CLICK));
何も起こりません。
他の可能性もあります:
マウスで実際にダブルクリックを実行すると、いくつかのイベントが送出されます: MOUSE_DOWN、MOUSE_UP、CLICK、MOUSE_DOWN、MOUSE_UP、CLICK、DOUBLE_CLICK
マップ サービスが MOUSE_DOWN をリッスンし、次のように MOUSE_DOWN ハンドラー内に DOUBLE_CLICK リスナーを追加する可能性があります。
mapRoot.addEventListener(MouseEvent.MOUSE_DOWN, _mouseDownHandler);
private function _mouseDownHandler(event:MouseEvent):void
{
var targ:InteractiveObject = event.target as InteractiveObject;
targ.addEventListener(MouseEvent.DOUBLE_CLICK, _doubleClickHandler);
}
private function _doubleClickHandler(event:MouseEvent):void
{
var targ:InteractiveObject = event.target as InteractiveObject;
targ.removeEventListener(MouseEVent.DOUBLE_CLICK, doubleClickHandler);
performMeasurement();
}
そのため、ハンドラーをトリガーするために、実際にはイベントの組み合わせをディスパッチする必要がある場合があります。
次のことを試すことができます。
DisplayObjectContainer.getObjectsUnderPoint()
クリックに応答する可能性のあるすべてのオブジェクトの配列を取得するために使用します。次に、その配列内の各オブジェクトから、適切なオブジェクトから適切なイベントが発生するまで、MouseEvents のさまざまなシーケンスをディスパッチしてみてください。
ただし、
areInaccessibleObjectsUnderPoint()
テストしたポイントで が true を返す場合、アクセスできないオブジェクトがいくつかあることに注意してください。これらのオブジェクトがマップ サービスがリッスンしているオブジェクトである場合は、対象外です。幸運。