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 函数以及有关如何修复上面显示的代码的建议。
这是一个详细说明如何使用精灵制作滑块的答案。
为此你需要两个精灵:
- 一个line/bar表示体积的限制
- 画在代表当前音量的线上的小按钮
更新逻辑
拥有它以便如果:
a. 用户按下键盘按钮 increase/lower 音量,你适当改变它。
b. 如果用户点击 line sprite,它会根据他们点击的 sprite 位置设置音量(得到 mouse.X 并减去音量条的 最左边的 x-val,然后除以音量条的总长度得到一个百分比)
(请注意,您无需担心他们点击并拖动按钮精灵,因为他们会间接点击音量条,因此它只会使用该代码)
绘制逻辑
完全相对于线条精灵绘制按钮精灵,使它们等比例缩放。
y值始终是线精灵的中心
x值是线精灵的far let x-val + 当前体积(百分比)* 线的宽度-精灵.
请注意,您需要线条精灵最左侧的 x-val 来获取和设置音量。这样,游戏的音量可以通过按键、拖动条 和 单击条上的任意位置来控制。这也意味着条形图的位置始终是实际交易量,让人们可以检查它是否真的在工作。
我没有为此提供任何代码示例,但非常乐意(您需要给我一些时间来编写它)
我正在使用 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 函数以及有关如何修复上面显示的代码的建议。
这是一个详细说明如何使用精灵制作滑块的答案。
为此你需要两个精灵:
- 一个line/bar表示体积的限制
- 画在代表当前音量的线上的小按钮
更新逻辑
拥有它以便如果:
a. 用户按下键盘按钮 increase/lower 音量,你适当改变它。
b. 如果用户点击 line sprite,它会根据他们点击的 sprite 位置设置音量(得到 mouse.X 并减去音量条的 最左边的 x-val,然后除以音量条的总长度得到一个百分比)
(请注意,您无需担心他们点击并拖动按钮精灵,因为他们会间接点击音量条,因此它只会使用该代码)
绘制逻辑
完全相对于线条精灵绘制按钮精灵,使它们等比例缩放。
y值始终是线精灵的中心
x值是线精灵的far let x-val + 当前体积(百分比)* 线的宽度-精灵.
请注意,您需要线条精灵最左侧的 x-val 来获取和设置音量。这样,游戏的音量可以通过按键、拖动条 和 单击条上的任意位置来控制。这也意味着条形图的位置始终是实际交易量,让人们可以检查它是否真的在工作。
我没有为此提供任何代码示例,但非常乐意(您需要给我一些时间来编写它)