使用鼠标滚轮XNA制作图像比例

时间:2012-10-31 19:35:35

标签: c# .net xna xna-4.0

如果鼠标滚轮相应地向上或向下滚动,我想要增加尺寸或缩小尺寸的图像。如果图像达到设定的最大尺寸,则如果使图像变小,则不会使蚂蚁变大,反之亦然。我遇到的问题是,一旦你达到图像的最大尺寸并继续向上滚动然后向下滚动图像将不会立即变小,直到你向下滚动相同的次数向上滚动图像在最大尺寸,然后再反转使图像变小。 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;
        }

1 个答案:

答案 0 :(得分:4)

如果您阅读: MSDN MouseState Scroll Wheel Value

你会发现它从游戏开始就保持了一个运行值。所以你要做的就是检查它是否有变化与之前的值,并做相应的事情。

你如何设置它似乎你不关心实际值,只是他们上次滚动滚轮时的差异。

在更新循环之外声明这些:

float prevWheelValue;
float currWheelValue;

然后在您的更新中:

prevWheelValue = currWheelValue;
currWheelValue = ms.ScrollWheelValue;

现在您的支票可以是prevWheelValue&gt; &LT;或== currWheelValue并将值钳制到您想要的边界。

Mathhelper.Clamp