2016-12-04 3 views
0

私はこのゲームをフラッシュで作成しています。このゲームでは、ユーザーが直線を描いて(非閉じた形を作成する)、ダブルクリックして線の描画を停止します。ダブルクリックでユーザーの図面を停止しますか? As3

私の図面ボードはムービークリップです(ステージではありません)。

ボード上にダブルクリックイベントリスナーを配置し、doubleClickEnabled = trueもボードに追加しました。

しかし、私が何をしても、ボードはダブルクリックを認識しません。

答えて

0

クリックイベントは、イベント位置でクリック可能なエンティティがいくつか存在する場合にトリガされます。つまり、「ドローイングボード」の「透過」領域で「ダブルクリック」すると、関連するイベントハンドラは呼び出されません。

ただし、表示領域全体を占めているので、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(); 
} 
+0

これを試しましたが、動作しません。ダブルクリックリスナをステージに追加しました。ステージ外でステージをダブルクリックすると動作しますが、ボード自体をダブルクリックすると動作しません。 – Mich

+0

@私は「ボード」の透明領域をダブルクリックするだけで「描画」を完成させることに興味があると思っていましたが、それ以外のことを発表して以来、再考の問題です!投稿に行った編集を確認してください:) – someOne

+0

グローバルな** deltaTime **変数を持つ簡単なクリックハンドラを提案し、どのクリックがダブルであるかを判断します。連続した2回のクリックに対してカスタム最大遅延を宣言しているため(ウィンドウの500ms) mouseDownイベントとmouseUpイベントを使って、イベントリスナーを減らしたり、既存のリスナー(描画ジョブのために存在する)を使用することもできます。 –

関連する問題