Объект возвращается в исходное положение каждый раз при запуске.

Я пишу простую программу перемещения объекта. Я ожидаю, что мой объект переместится в мою позицию касания. Все работает отлично, за исключением того, что позиция объекта возвращается в исходное положение каждый раз, когда я прикасаюсь к Beggan.

Может кто-нибудь объяснить порядок, в котором методы запускаются при запуске события?

- (void)viewDidLoad
{
 planeSpeed = 0;
 timeStep = 200;

 planeCenterX = plane.center.x;
 planeCenterY = plane.center.y;

 timer = [NSTimer scheduledTimerWithTimeInterval:(******)timeStep/1000 target:self selector:@selector(moveAirplane) userInfo:nil repeats:YES];
}

-(void) moveAirplane
{
 speedX = planeSpeed * cos(planeVelocutyAngle);
 speedY = planeSpeed * sin(planeVelocutyAngle);

 planeCenterX = planeCenterX + (int) speedX;
 planeCenterY = planeCenterY + (int) speedY;

 plane.center = CGPointMake(planeCenterX, planeCenterY);
 plane.transform = CGAffineTransformMakeRotation(planeVelocutyAngle);
}

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
 UITouch * touch = [touches anyObject];
 CGPoint touchPoint = [touch locationInView:self.view];

 ****** xDiff = (touchPoint.x - planeCenterX);
 ****** yDiff = (touchPoint.y - planeCenterY);

 planeVelocutyAngle = atan2(yDiff, xDiff); // gets direction in which plane should move
 planeSpeed = 10;

}

Заметьте: это моя первая программа для iphone!

1 ответ

Я знаю, что проблема связана с методом вращения:

plane.transform = CGAffineTransformMakeRotation(planeVelocutyAngle);

У меня была та же проблема, и единственный способ, которым я мог ее решить, - избавиться от этой функции.

licensed under cc by-sa 3.0 with attribution.