我有两个 AVAudioPlayer,分别称为“节点”和“区域”。他们有时会同时演奏。发生这种情况时,我需要将“区域”的音量降至 0.2。当“节点”完成时,我需要将“区域”返回到它的原始卷(从数组中拉入)。我有一个 adjustPlayerVolume 方法和另一个在节点完成时将“nodeIsPlaying”变量设置为 false 的方法。这两个工作正常。
以下代码用于检测音量是否需要上升或下降或保持原样。只要应用程序正在运行,它就会在一个循环中运行。
NSLog(@"Zone Volume = %f", zonePlayer.volume);
if ((nodeIsPlaying == false) && (zonePlayer.volume <= 0.200000)) {
float maxVolume = [[[locationArray objectAtIndex:1] valueForKey:@"volume"] floatValue];
[self adjustZoneVolume:maxVolume];
NSLog(@"adjustZoneVolume called, node isn't playing and zonePlayer volume needs to be raised");
}
if ((nodeIsPlaying == true) && (zonePlayer.volume != 0.200000)) {
float maxVolume = 0.2;
[self adjustZoneVolume:maxVolume];
NSLog(@"adjustZoneVolume called, node is playing and zonePlayer volume needs to be lowered");
}
顶部的日志始终将 0.200000 的卷打印到控制台。
当 nodeIsPlaying 设置为 true 时,返回底部条件,即使 NOT 运算符应该防止这种情况发生。
当 nodeIsPlaying 设置为 false 时,没有任何反应。
所以 <= 和 != 操作有问题。
大概是真的很蠢的事情……
有任何想法吗?
提前致谢。