我制作了一个带有UIVIew
.png 图像(mouthMeter)的声音应用程序,我想根据.png 图像averagePowerForChannel
的AVAudioPlayer
. alpha 正在通过更新从NSTimer
, meterTimer
, 每秒 12 次(模拟 12 fps)进行更改。我还有一个 second NSTimer
,sliderTimer
它每秒更新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];
}