0

私はActionscript3を使用しており、画像ビューアを構築しています。これまでのところ、「onClick」マウスイベントに基づいて、次の機能があります。

1)通常のサイズの画像を表示しているときに、クリックすると「ズームされた」画像が表示されます。
2)ズーム画像を表示しているときにクリックすると、「通常の」画像が表示されます。

素晴らしいもの。

ここで、次の動作を適用して、ユーザーがズームインし、ズームした画像をドラッグして、次のようにスケッチできるようにします。

1)onClickイベントを削除しました
2)「onMouseDown」イベントを追加して、マウスダウンでマウスXYを記録します
3)「onMouseUp」イベントを追加し、マウスアップでマウスXYを記録します
4)XY onMouseDown = XY onMouseUp then Clickイベントを想定します-ズーム
5)XY onMouseDown!= XY onMouseUpの場合、Dragイベントを想定します-画像をドラッグします

現在、これは、ユーザーがクリックしている間、安定した手を持っている場合にのみ機能します-そして、素晴らしい解決策のようには感じません。ユーザーが不安定な手を持っている場合、本当にズームを解除したいときにドラッグイベントが想定されます...

上でスケッチしたよりも、画像をドラッグするかズームするかを検出するためのより良い方法を誰かが提案できますか?

あなたの考え/助けてくれてありがとう、

シニアココナッツ。

4

1 に答える 1

3

基本的な擬似コードは次のとおりです。

import flash.utils.getTimer;

private var clickTime:uint;

function onMouseDown(event:Event):void {
    this.clickTime = getTimer();

    // Start drag even if they intend to zoom -- it won't hurt if it shifts a
    // couple pixels before zooming out
    startDrag();
}

function onMouseUp(event:Event):void {
    var delta = getTimer() - this.clickTime;

    // It's been less than a quarter second, so user probably meant to zoom
    // in/out.  Adjust this number to taste if it seems too low or high.
    if (delta < 250)
        toggleZoom();

    stopDrag();
}
于 2009-11-13T10:39:43.777 に答える