クリックイベントは、イベント位置でクリック可能なエンティティがいくつか存在する場合にトリガされます。つまり、「ドローイングボード」の「透過」領域で「ダブルクリック」すると、関連するイベントハンドラは呼び出されません。
ただし、表示領域全体を占めているので、stage
オブジェクトを使用することができます。とにかくマウスイベントを受信します。考え方は、stage
のイベントハンドラにイベント発生について図面ボードの相手に知らせることです。
board.doubleClickEnabled = true;
board.addEventListener(MouseEvent.DOUBLE_CLICK, onBoardDBLClick);
stage.doubleClickEnabled = true;
stage.addEventListener(MouseEvent.DOUBLE_CLICK, onStageDBLClick);
function onStageDBLClick(e:MouseEvent):void {
trace("STAGE double clicked.");
// if the location is inside the "board", then inform the "board" about the event!
if (board.getBounds(stage).contains(e.stageX, e.stageY)) {
onBoardDBLClick(e);
}
}
function onBoardDBLClick(e:MouseEvent):void {
trace("The Double-click logic of the board.");
e.stopPropagation();
}
これを試しましたが、動作しません。ダブルクリックリスナをステージに追加しました。ステージ外でステージをダブルクリックすると動作しますが、ボード自体をダブルクリックすると動作しません。 – Mich
@私は「ボード」の透明領域をダブルクリックするだけで「描画」を完成させることに興味があると思っていましたが、それ以外のことを発表して以来、再考の問題です!投稿に行った編集を確認してください:) – someOne
グローバルな** deltaTime **変数を持つ簡単なクリックハンドラを提案し、どのクリックがダブルであるかを判断します。連続した2回のクリックに対してカスタム最大遅延を宣言しているため(ウィンドウの500ms) mouseDownイベントとmouseUpイベントを使って、イベントリスナーを減らしたり、既存のリスナー(描画ジョブのために存在する)を使用することもできます。 –