C# - 如何设置音量滑块

时间:2018-01-11 21:51:05

标签: c# xna

我正在使用XNA 4.0 Framework制作游戏。我一直试图制作音量,但我无法弄明白。主要问题是如何确定滑块的长度以正确表示体积(0.0f - 1.0f)。我主要只是需要有关如何清理它的建议。 这是我当前滑块的代码:

private void VolSlider(int moveSpeed)
    {
        if (kb.IsKeyDown(Keys.PageUp) && prevKb.IsKeyDown(Keys.PageUp))
        {
            buttonSliderRec.X += moveSpeed;
            MediaPlayer.Volume = Math.Min(1.0f, MediaPlayer.Volume + 0.001f);
        }
        if (kb.IsKeyDown(Keys.PageDown) && prevKb.IsKeyDown(Keys.PageDown))
        {
            buttonSliderRec.X -= moveSpeed;
            MediaPlayer.Volume = Math.Min(1.0f, MediaPlayer.Volume - 0.001f);
        }

        //Resets the volume to default
        if (mouse.LeftButton == ButtonState.Pressed && mouse.X >= 494 && mouse.X <= 720 &&
            mouse.Y >= 163 && mouse.Y <= 230)
        {
            MediaPlayer.Volume = 0.5f;
            YouLoseInst.Volume = 0.5f;
            YouWinInst.Volume = 0.5f;
            onClickInst.Volume = 0.5f;
        }
    }

我在switch语句中的Update中调用了这个子程序。我只是想知道如何正确地使滑块代表Volume功能以及如何修复上面显示的代码的建议。

1 个答案:

答案 0 :(得分:1)

这是一个详细说明如何使用精灵制作滑块的答案。

为此你需要两个精灵:

  1. 表示音量限制的线/条
  2. 在代表当前音量的行上绘制的小按钮
  3. 更新逻辑

    如果:

    ,请这样做

    a。用户点击增大/减小音量的键盘按钮,您可以适当地更改它。

    b。如果用户点击精灵,则会根据他们点击的精灵上的位置设置音量(获取mouse.X并减去<音量条的强>最左边x-val ,然后除以音量的总长度百分比)

    (注意,你不必担心他们点击并拖动按钮精灵,因为他们会间接点击音量条,所以它只会使用该代码)

    绘制逻辑

    相对于线精灵完全绘制按钮精灵,以便它们相等地缩放。

    1. y值始终是细线精灵的中心

    2. x值是行精灵的远x-val +当前音量(以百分比表示)*行精灵的宽度。

    3. 请注意,您需要行精灵的最左侧x-val来获取和设置音量。这样,可以通过按键控制游戏的音量,拖动栏点击栏上的任意位置。它还意味着条形图的位置始终是实际音量,允许人们检查它是否实际工作。

      我没有为此提供任何代码示例,但我们非常乐意(您必须给我一些时间来编写它)