4

ゲームでミニマップとして使用するパン アンド ズーム キャンバスを作成しようとしています。ステージをドラッグ可能に設定して、プレーヤーがマウスで移動したり、ステージのレイヤー上の個々のオブジェクトを移動したりできるようにしました。ただし、ステージを周囲の白いスペースにドラッグできるようにしたくありません。言い換えれば、ズームインしている間だけパンを許可したいので、その空白に遭遇することはありません. ステージを制限しようとするために、dragBoundFunc を設定しました。

        dragBoundFunc: function(pos) {
            return {
                x: (pos.x < 0 ? 0 : pos.x > width ? width : pos.x),
                y: (pos.y < 0 ? 0 : pos.y > height ? height : pos.y)
            };
        }

(完全な JSFiddle の例: http://jsfiddle.net/4Brry/ )

私は2つの問題に遭遇しています:

  • まず、キャンバスは依然として上方向と左方向に移動できます。
  • 第 2 に、さらに厄介なことに、ズームを開始すると、制約が誤動作し始めます。ズームすると、制約はこの事実を考慮しません。では、ステージ オフセットを追加するとどうなるでしょうか。

            dragBoundFunc: function(pos) {
            return {
                x: ((ui.stage.getOffset().x+pos.x) < 0 ? 0 : pos.x > width ? width : pos.x),
                y: ((ui.stage.getOffset().y+pos.y) < 0 ? 0 : pos.y > height ? height : pos.y)
            };
        }
    

    (完全な JSFiddle の例: http://jsfiddle.net/2fLCd/ )

これははるかに優れていますが、行き過ぎるとビューが「元に戻る」ようになりました。許可されていない方向への移動を停止した方がよいでしょう。

これらの問題を解決する方法を知っている人はいますか?

4

1 に答える 1