0

好的,所以我正在尝试在客户端登录后逐渐减小剪辑的音量

问题是,我需要改变这个

FloatControl gainControl = (FloatControl)
clip.getControl(FloatControl.Type.MASTER_GAIN);
gainControl.setValue(-10.0f);// 

进入for循环,我不知道该怎么做

我是新来的,所以我不确定事情是如何运作的,所以如果我遗漏了任何信息,请告诉我

编辑:我明白了,这是任何有类似问题的人的代码

FloatControl gainControl = (FloatControl)
clip.getControl(FloatControl.Type.MASTER_GAIN);
for(int i = 0; i >= -35; --i) {
    try {
        Thread.sleep(160);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    gainControl.setValue((float) i);
}
4

2 回答 2

0

如果您愿意,可以使用双精度循环“索引”。由于通常的浮点问题,您只需要小心循环终止条件。

public class DoubleIndex {
    public static void main(String[] argv) {
        for (double x = 0.0; x < 2.0; x+=0.2) {
            System.out.println(x);
        }
    }
}

(请注意,由于浮点精度问题,这会迭代 11 次。)

C:\JavaTools>java DoubleIndex
0.0
0.2
0.4
0.6000000000000001
0.8
1.0
1.2
1.4
1.5999999999999999
1.7999999999999998
1.9999999999999998
于 2013-09-22T14:31:22.180 回答
0

怎么样:

FloatControl gainControl = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);

for(int i = 0; i >= -10; --i) {
   gainControl.setValue((double) i);
}

如果你想用分数减少它,你可以这样做:

for(int i = 0; i >= -50; --i) {
   gainControl.setValue(0.2 * i);
}

在第二种情况下,您将音量减少 0.2。

我使用 int 是因为浮点倾向于导致>=条件问题。

于 2013-09-22T13:52:25.300 回答