0

我制作了一个带有UIVIew.png 图像(mouthMeter)的声音应用程序,我想根据.png 图像averagePowerForChannelAVAudioPlayer. alpha 正在通过更新从NSTimer, meterTimer, 每秒 12 次(模拟 12 fps)进行更改。我还有一个 second NSTimersliderTimer它每秒更新UISlider一次 a 的位置。

似乎正在发生变暗,但是 alpha 脉冲完全打开 (1.0) 会产生第二个影响。当我弄乱 的间隔时,我可以改变脉冲的速度,NSTimers所以我认为它们会以某种方式干扰,但我不知道如何或为什么。

有任何想法吗?还有其他人有使用音频从AVAudioPlayer驱动器和驱动器的经验UIAnimation吗?

h.文件

@property (nonatomic, strong) AVAudioPlayer *audioPlayer;
@property(getter = isMeteringEnabled) BOOL meteringEnabled;
@property (nonatomic, strong) NSTimer *sliderTimer;
@property(nonatomic,strong) NSTimer * meterTimer;
...

m.文件

- (void)viewDidLoad{
...
self.sliderTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self     
selector:@selector(updateSlider:) userInfo:NULL repeats:YES];
self.meterTimer = [NSTimer scheduledTimerWithTimeInterval:0.12 target:self   
selector:@selector(updateMouthMeter:) userInfo:NULL repeats:YES];
...
}

-(void)updateMouthMeter : (id)sender {
[self.audioPlayer updateMeters];
float level = [self.audioPlayer averagePowerForChannel:0];
float alphaLevel = (((level * -1.0)/160)+0.3);
[UIView beginAnimations:nil context:NULL];
self.mouthMeter.alpha = alphaLevel;
[UIView commitAnimations];
}
4

0 回答 0