我有两个AVAudioPlayers,称为“节点”和“区域”。他们有时会在同一时间玩。当发生这种情况时,我需要将“区域”的音量降至0.2。当'node'结束时,我需要将'zone'返回到它的原始卷(从数组中拉入)。我有一个adjustPlayerVolume方法,另一种方法是在节点完成时将'nodeIsPlaying'变量设置为false。这两项工作都很好。AVAudioPlayer音量条件不正确返回
以下代码正在用于检测卷是否需要上升或下降或保持原样。只要应用程序运行,它就在一个循环内运行。
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时,什么都不会发生。
所以< =和!=操作有问题。
也许真的很愚蠢......
任何想法?
在此先感谢。
感谢AntonPalich,看起来像它会做的伎俩。 – MightyMeta