C# - 如何制作音量滑块

C# - How to do a volume slider

我正在使用 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. 一个line/bar表示体积的限制
  2. 画在代表当前音量的线上的小按钮

更新逻辑

拥有它以便如果:

a. 用户按下键盘按钮 increase/lower 音量,你适当改变它。

b. 如果用户点击 line sprite,它会根据他们点击的 sprite 位置设置音量(得到 mouse.X 并减去音量条的 最左边的 x-val,然后除以音量条的总长度得到一个百分比)

(请注意,您无需担心他们点击并拖动按钮精灵,因为他们会间接点击音量条,因此它只会使用该代码)

绘制逻辑

完全相对于线条精灵绘制按钮精灵,使它们等比例缩放。

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

  2. x值是线精灵的far let x-val + 当前体积(百分比)* 线的宽度-精灵.

请注意,您需要线条精灵最左侧的 x-val 来获取和设置音量。这样,游戏的音量可以通过按键、拖动条 单击条上的任意位置来控制。这也意味着条形图的位置始终是实际交易量,让人们可以检查它是否真的在工作。

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