2014-02-15 4 views
0

Когда я запустить приложение я работаю только одна ошибка происходит:Использование необъявленный идентификатор «обновления»

Использование необъявленной идентификатора «обновление»

Вот код в ViewController.m, где ошибка:

- (void)update { 
     NSTimeInterval secondsSinceLastDraw = -([self.lastUpdateTime timeIntervalSinceNow]); 

     self.pacmanYVelocity = self.pacmanYVelocity - (self.acceleration.x * secondsSinceLastDraw); 
     self.pacmanXVelocity = self.pacmanXVelocity - (self.acceleration.y * secondsSinceLastDraw); 

     CGFloat xDelta = secondsSinceLastDraw * self.pacmanXVelocity * 500; 
     CGFloat yDelta = secondsSinceLastDraw * self.pacmanYVelocity * 500; 

     self.currentPoint = CGPointMake(self.currentPoint.x + xDelta, 
             self.currentPoint.y + yDelta); 

     [self movePacman]; 

     self.lastUpdateTime = [NSDate date]; 

     - (void)movePacman { 
      self.previousPoint = self.currentPoint; 

      CGRect frame = self.pacman.frame; 
      frame.origin.x = self.currentPoint.x; 
      frame.origin.y = self.currentPoint.y; 

      self.pacman.frame = frame; 

      // Rotate the sprite 
      CGFloat newAngle = (self.pacmanXVelocity + self.pacmanYVelocity) * M_PI * 4; 
      self.angle += newAngle * kUpdateInterval; 

      CABasicAnimation *rotate; 
      rotate      = [CABasicAnimation animationWithKeyPath:@"transform.rotation"]; 
      rotate.fromValue   = [NSNumber numberWithFloat:0]; 
      rotate.toValue    = [NSNumber numberWithFloat:self.angle]; 
      rotate.duration   = kUpdateInterval; 
      rotate.repeatCount   = 1; 
      rotate.removedOnCompletion = NO; 
      rotate.fillMode   = kCAFillModeForwards; 
      [self.pacman.layer addAnimation:rotate forKey:@"10"]; 
     } 
    } 
} 

ответ

1

проблема заключается в том, что у вас есть свой метод movePacman внутри вашего метода update. У вас не может быть методов внутри других методов. Отделить их:

- (void)update { 
    NSTimeInterval secondsSinceLastDraw = -([self.lastUpdateTime timeIntervalSinceNow]); 

    self.pacmanYVelocity = self.pacmanYVelocity - (self.acceleration.x * secondsSinceLastDraw); 
    self.pacmanXVelocity = self.pacmanXVelocity - (self.acceleration.y * secondsSinceLastDraw); 

    CGFloat xDelta = secondsSinceLastDraw * self.pacmanXVelocity * 500; 
    CGFloat yDelta = secondsSinceLastDraw * self.pacmanYVelocity * 500; 

    self.currentPoint = CGPointMake(self.currentPoint.x + xDelta, 
            self.currentPoint.y + yDelta); 

    [self movePacman]; 

    self.lastUpdateTime = [NSDate date]; 
} 

- (void)movePacman { 
    self.previousPoint = self.currentPoint; 

    CGRect frame = self.pacman.frame; 
    frame.origin.x = self.currentPoint.x; 
    frame.origin.y = self.currentPoint.y; 

    self.pacman.frame = frame; 

    // Rotate the sprite 
    CGFloat newAngle = (self.pacmanXVelocity + self.pacmanYVelocity) * M_PI * 4; 
    self.angle += newAngle * kUpdateInterval; 

    CABasicAnimation *rotate; 
    rotate      = [CABasicAnimation animationWithKeyPath:@"transform.rotation"]; 
    rotate.fromValue   = [NSNumber numberWithFloat:0]; 
    rotate.toValue    = [NSNumber numberWithFloat:self.angle]; 
    rotate.duration   = kUpdateInterval; 
    rotate.repeatCount   = 1; 
    rotate.removedOnCompletion = NO; 
    rotate.fillMode   = kCAFillModeForwards; 
    [self.pacman.layer addAnimation:rotate forKey:@"10"]; 
} 
+0

СПАСИБО за меня. Извините, я новичок в разработке и как их отделить? Благодаря! – user3312423

+0

См. Мой обновленный ответ. – rmaddy

+5

Могу ли я вежливо предложить вам найти хороший учебник по языку программирования Objective-C. Время, затрачиваемое на изучение основ языка (прежде чем пытаться написать следующую самую продаваемую игру), сэкономит вам массу времени. Удачи. – rmaddy

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