我正在使用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功能以及如何修复上面显示的代码的建议。
答案 0 :(得分:1)
这是一个详细说明如何使用精灵制作滑块的答案。
为此你需要两个精灵:
如果:
,请这样做a。用户点击增大/减小音量的键盘按钮,您可以适当地更改它。
b。如果用户点击行精灵,则会根据他们点击的精灵上的位置设置音量(获取mouse.X并减去<音量条的强>最左边x-val ,然后除以音量的总长度百分比)
(注意,你不必担心他们点击并拖动按钮精灵,因为他们会间接点击音量条,所以它只会使用该代码)
相对于线精灵完全绘制按钮精灵,以便它们相等地缩放。
y值始终是细线精灵的中心
x值是行精灵的远x-val +当前音量(以百分比表示)*行精灵的宽度。
请注意,您需要行精灵的最左侧x-val来获取和设置音量。这样,可以通过按键控制游戏的音量,拖动栏和点击栏上的任意位置。它还意味着条形图的位置始终是实际音量,允许人们检查它是否实际工作。
我没有为此提供任何代码示例,但我们非常乐意(您必须给我一些时间来编写它)