достаточно, достаточно.
, как говорится в названии, я немного рассола.
, так вот в общих чертах моя проблема.У меня есть этот корабль правильно.Он лежит в центре нижней части экрана (240,0).Когда пользователь касается вправо в точке, превышающей 240, корабль движется вправо.И остается, если пользователь касается точки менее 240. ОДНАКО это здорово, когда на экране одновременно только один палец.Мне это нужно там, где, если пользователь касается правого, не поднимает палец, затем касается левого (ОХ, ДАВАЙТЕ ДВУХ ПАЛЬЦЕВ НА ЭКРАНЕ), корабль продолжает движение вправо, пока они не поднимают правый палец, затем внезапно корабль движется влево квторое касание.
Я использую таймеры, чтобы добавить / вычесть число из текущей координаты x, чтобы заставить его двигаться.
Это то, что я имею в двух словах: (Несмеяться или ненавидеть, я нуб)
-(void)moveShipLeft:(id)sender {
shipView.center = CGPointMake(shipView.center.x - 2, 320 - (shipView.image.size.height / 2));
}
-(void)moveShipRight:(id)sender {
shipView.center = CGPointMake(shipView.center.x + 2, 320 - (shipView.image.size.height / 2));
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [[event allTouches] anyObject];
CGPoint location = [touch locationInView:touch.view];
if (240 < location.x){rightTimer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(moveShipRight:) userInfo:nil repeats:YES];}
if (240 > location.x){leftTimer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(moveShipLeft:) userInfo:nil repeats:YES];}
[shipView setCenter:shipView.center];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
if (rightTimer != nil) //Kill the timer that goes right upon touch removal
[rightTimer invalidate];
rightTimer = nil;
if (leftTimer != nil) //Kill the timer that goes left on touch removal
[leftTimer invalidate];
leftTimer = nil;
}
Я пытаюсь полностью скопировать элементы управления для игры "Радиант", если это поможет.Я буду серьезно любить тебя всегда, если ты поможешь.
Просто чтобы прояснить, я хочу, чтобы это произошло:
- пользователь касается правой стороны экрана
- ход кораблявправо
- пользователь касается левой стороны экрана вторым пальцем
- , пока корабль все еще движется вправо, поскольку пользователь не снял свое первое касание, затем пользователь поднимает первое касание
- ТОГДА корабль мгновенно меняет курс, чтобы двигаться влево ко второму касанию.
. Сейчас у меня включено мультитач, так что теперь он работает так:
- пользователькасается правой стороны экрана
- корабль движется вправо
- пользователь касается левой стороны экрана вторым пальцем
- корабль движется влево, затем пользователь поднимает первое касание
- Корабль остановлен на своем пути, хотя пользователь не поднял второе касание