私は、ユーザーがiOSデバイスを持っている位置(立っている、正面/背面、または横になっている)ごとにビープ音を鳴らすアプリに取り組んでいます。現時点では、ユーザーがデバイスを横にした状態で音を鳴らすことができますが、問題は、加速度計の値がスライダーにリンクされているため、ビープ音が連続して鳴る(つまり、次のように音が鳴る)ことです。ユーザーがデバイスを横に持っている限り)、1回だけではありません。
ユーザーがデバイスを横に固定するだけで、ビープ音が1回鳴り、デバイスを他の位置に順番に保持して、次のビープ音が鳴るのを待つようにしたいと思います。ユーザーが一歩一歩進んで、デバイスを一度に1つずつ各位置に保持し、ビープ音が鳴った後でのみ次の位置に移動してほしい。
これが私が使っているコードです:
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
NSLog(@"(%.02f, %.02f, %.02f)", acceleration.x, acceleration.y, acceleration.z);
slider.value = acceleration.x;
if (slider.value == -1)
[self pushBeep];
else if (slider.value == 0.00)
[self pushBap];
else if (slider.value == 1)
[self pushBop];
...
これが私のpushBeep()メソッドのコードです(参考までに、pushBeep / pushBap / pushBopメソッドはすべて同じです):
-(void) pushBeep {
NSString *soundPath =[[NSBundle mainBundle] pathForResource:@"beep-7" ofType:@"wav"];
NSURL *soundURL = [NSURL fileURLWithPath:soundPath];
NSError *ierror = nil;
iPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundURL error:&ierror];
[iPlayer play];
}
誰かがここで何が問題なのか理解できますか?