2010-10-29 2 views
0

На самом деле я хочу применить петлю на акселерометре, значит, я хочу запустить акселерометр от имени петли. если я хочу запустить цикл один, тогда вы хотите выполнить акселерометр за один раз. если цикл будет работать дважды, тогда вам нужно дважды запустить акселерометр. Но этого не происходит. Что мне делать, чтобы контролировать акселерометр.Применить петлю на чтение акселерометра?

быстрый взгляд на код

в viewdidload

for (int i=0; i<3; i++) 

    { 
     NSLog(@"Hellooooooooo",i); 
     [[UIAccelerometer sharedAccelerometer] setDelegate:self]; 
    } 

и акселерометр didAccelerate

{ 
     float xx = -[acceleration x]; 
    float yy = [acceleration y]; 

} 

Я не знаю, что происходит не так?

помогите мне, если у вас есть представление об этом.

Заранее благодарим за любую помощь.

ответ

-1

Я решил эту проблему. Просто примените переменную count int и назначьте значение значения count. Возьмите значение от пользователя в соответствии с вашими потребностями и проверьте состояние делегата акселерометра. Увеличивайте значение счетчика каждый раз и останавливайте акселерометр по определенному счету, который хотите.

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate: 
        (UIAcceleration *)acceleration 
{ 
    // Get the current device angle 

     float xx = -[acceleration x]; 

     float yy = [acceleration y]; 

     if(count <= userChoice) 
     { 
      if(deviceOrientation != UIInterfaceOrientationPortraitUpsideDown) 
      { 
       // here we will start NStimer to calcualte actual time 

        NSLog(@"Count Before = %d",count); 

        alert.hidden=TRUE; 

        deviceOrientation = UIInterfaceOrientationPortraitUpsideDown; 

        [self startTimer]; 

        count++; 

        NSLog(@"Count after = %d",count); 
      } 
     } 

if (count <= 1) 
{ 
    count++; 

} 

else 
{ 
     UIAlertView *alert =[[UIAlertView alloc] initWithTitle:@"Stop" message:@"Your rounds are ended." delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil]; 

     [alert show]; 

     [alert release]; 

    } 

} 
0

Установите интервал обновления на что-то не 0.
И если вам не нужен акселерометр, установите его на 0 и удалите делегата. Если вы хотите 3 измерения, вам нужно изменить свой код, установка делегата 3 раза не влияет.

Вы могли бы использовать что-то вроде этого:

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration { 
    static int count = 0; 
    count++; 
    float xx = -[acceleration x]; 
    float yy = [acceleration y]; 
    if (count >= 3) { 
     [accelerometer setUpdateInterval:0]; 
     [accelerometer setDelegate:nil]; 
     count = 0; 
    } 
    NSLog(@"%f %f", xx, yy); 
} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [[UIAccelerometer sharedAccelerometer] setDelegate:self]; 
    [[UIAccelerometer sharedAccelerometer] setUpdateInterval:1.0/measurementsPerSecond]; 
} 
+0

Что такое MeasurementsPerSecond в этом коде? –

+0

и его не работает для меня. –

Смежные вопросы