Доброго времени суток.
Просмотрите пожалуйста следующий код:
- (void)viewDidLoad
{
[super viewDidLoad];
self.myTimer = [NSTimer scheduledTimerWithTimeInterval:4.0f
target:self
selector:@selector(create:)
userInfo:nil
repeats:YES];
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *Touch = [[event allTouches]anyObject];
CGPoint location = [Touch locationInView:Touch.view];
if ( (location.x <160)&&(location.y>=496)) {
[UIView setAnimationDuration:0.1f];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
if (bounce.center.x>20) {bounce.center = CGPointMake(bounce.center.x - 20 , bounce.center.y); }
}
if ((location.x > 160)&&(location.y>=496)) {
[UIView setAnimationDuration:0.1f];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
if (bounce.center.x<300) {bounce.center = CGPointMake(bounce.center.x + 20 , bounce.center.y); }
}
}
-(void)create:(NSTimer*)timer {
CGRect lab = CGRectMake(0, 0, 70, 50);
l = [[UIImageView alloc] initWithFrame:lab];
l.backgroundColor=[UIColor greenColor];
[self.view addSubview:l];
CGRect lab1 = CGRectMake(110, 0, 320, 50);
l1 = [[UIImageView alloc] initWithFrame:lab1];
l1.backgroundColor=[UIColor greenColor];
[self.view addSubview:l1];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:3.0f];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
l.center = CGPointMake(35 , 600);
l1.center = CGPointMake(270, 600);
}
Имеется объект bounce - обычный шарик, который может менять свое положение (подвинуться вправо или влево) в зависимости от нажатия на указанные области экрана.
Далее, методом create я создаю некоторый барьер из двух UIImageView, а затем заставляю их синхронно двигаться, с помощью промежуточной анимации.
Без таймера всё хорошо работает, но мне нужно, что такой барьер создавался в указаной области каждые 4 секунды. Создаваться - создается, и даже правильно двигается. НО: после каждого пройденного шага, шарик с помощью той же промежуточной анимации стремиться в начальное положение. Я так понимаю, что изменения его положения не передается в таймер. Подскажите, пожалуйста, как это исправить?
Спасибо.