2

マウスホイールを上下にスクロールすると、サイズを大きくしたり、小さくしたりしたい画像があります。画像が設定された最大サイズに達した場合、画像が大きくなることはありません。画像を小さくすると、その逆も同様です。私が抱えている問題は、画像の最大サイズに達して上にスクロールし続けてから下にスクロールすると、画像が上にスクロールしたのと同じ回数下にスクロールするまで、画像がすぐに小さくならないことです。画像を小さくするために最大サイズともう一度逆にします。ScrollWheelValue は読み取り専用プロパティであるため、リセットできません。ホイールが上にスクロールされ、画像が最大サイズの場合、120 はマウスがスクロールごとに増加するため、120 を減算するロジックを追加しようとしていました。誰でもこの問題で私を助けることができますか? どうもありがとう

元のコード:

        float scale = ms.ScrollWheelValue / 120;

        scaleFactor = scale * scaleChange;

        if (scaleFactor > MAX_SCALE)
        {
            scaleFactor = MAX_SCALE;


        }

        else if (scaleFactor < MIN_SCALE)
        {
            scaleFactor = MIN_SCALE;


        }            

新しいコード:

        if (scaleFactor > MAX_SCALE)
        {
            scaleFactor = MAX_SCALE;
            float newScale = ms.ScrollWheelValue / 120;
            if (newScale > scale)
            {
                scaleCount = scaleCount - 120;
            }
            if (newScale < scale)
            {
                scaleCount = scaleCount + 120;
            }

        }

        else if (scaleFactor < MIN_SCALE)
        {
            scaleFactor = MIN_SCALE;
            float newScale = ms.ScrollWheelValue / 120;
            if (newScale > scale)
            {
                scaleCount = scaleCount - 120;
            }
            if (newScale < scale)
            {
                scaleCount = scaleCount + 120;
            }

        }

        else
        {
            scale = ms.ScrollWheelValue / 120 + scaleCount;

            scaleFactor = scale * scaleChange;
        }
4

1 に答える 1

4

あなたが読んだ場合: MSDN MouseState Scroll Wheel Value

ゲームの最初から実行中の値を保持していることがわかります。したがって、あなたがしたいことは、以前の値との変化をチェックし、それに応じて何かをすることです。

どのように設定したかというと、実際の値は気にしないようです。最後にホイールをスクロールしてからの差だけです。

これらを更新ループの外で宣言します。

float prevWheelValue;
float currWheelValue;

次に、更新で:

prevWheelValue = currWheelValue;
currWheelValue = ms.ScrollWheelValue;

これで、prevWheelValue > < または == を currWheelValue に変更し、値を必要な境界にクランプするかどうかを簡単にチェックできます。

Mathhelper.Clamp

于 2012-10-31T19:55:29.940 に答える