Множественное прикосновение к проблеме с iPhone

Как я могу сделать так, чтобы, когда пользователь играет на джойстике для перемещения персонажа в центре, он также мог коснуться нижнего правого края экрана (второе касание), чтобы выстрелить из пистолета? Я посмотрел на другие вопросы, но я все еще не могу понять это...

это в основном код....:

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
//make the touch point...
UITouch *touch = [[event allTouches]anyObject];  
CGPoint point = [touch locationInView:touch.view];

if (//touching a certain area (on the joystick)) {
//do stuff
}

else if (point.x > 300 && point.y > 200) {
/fire method

}




}

Итак, в основном, как мне вызвать touchesBegan снова, чтобы найти положение точки CGPoint и решить, следует ли вызывать метод огня?

Спасибо

РЕДАКТИРОВАТЬ:

Я попытался сделать этот второй вариант и сделал это: в представлении controller.h я добавил:

@interface fireView: UIView 
@end 

а в .m я добавил:

@implementation fireView -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {         
NSLog(@"hi");
} 

@end 

.... но он не записывает/не печатает "привет"?


person Bob    schedule 01.07.2012    source источник


Ответы (1)


Используйте 2 UIGestureRecognizer. Вы можете создать 2 невидимых вида нужного размера - один для джойстика и один для кнопки фаер. Для каждого представления используйте один распознаватель жестов. И тогда вы сможете обрабатывать нажатия на эти представления разными способами, не проверяя, был ли это огонь или джойстик.

Предположим, у вас уже есть 2 вида — joystickView и fireView. Тогда сделай это как

  UITapGestureRecognizer* fireTapGestureRec= [[UITapGestureRecognizer alloc] 
                             initWithTarget:self action:@selector(fireTapped:)];
    fireTapGestureRec.delegate = self;
    fireTapGestureRec.numberOfTapsRequired = 1;
    fireTapGestureRec.numberOfTouchesRequired = 1;
    [fireView addGestureRecognizer:fireTapGestureRec];
    [fireTapGestureRec release];

и напишите fireTapped: для обработки события. И то же самое для джойстика.

ИЗМЕНИТЬ Второй вариант (предложен в комментариях) Создайте подклассы UIView, например

@interface fireView: UIView
@interface joystickView: UIView

и для каждого подкласса напишите свой touchesBegan: или touchesEnded:

person Pavel Oganesyan    schedule 01.07.2012
comment
Для игр задержка, которую вносит UIGestureRecognizer, действительно утомительна. Я бы предложил ваш метод, но для подкласса двух UIViews и использования touchesBegan - person Mazyod; 01.07.2012
comment
Привет, гм, я попытался сделать этот 2-й вариант и сделал это: в view controller.h я добавил: (at) interface fireView: UIView (at) end и в .m я добавил: (at) реализация fireView - (void) touchesBegan: (NSSet *) touches withEvent: (UIEvent *) event { NSLog(@hihihi); } (at)end, но не пишет hi-hihi? - person Bob; 03.07.2012
comment
Не могли бы вы выложить код добавления fireView в основной вид игры и все, что может быть полезно, на ваш взгляд, к вопросу в качестве правки? - person Pavel Oganesyan; 04.07.2012