0

我怎样才能做到这一点,当用户在操纵杆上玩游戏以移动中心的角色时,他们也可以触摸屏幕的右下角(第二次触摸)来开枪?我看过其他问题,但我仍然无法弄清楚......

这基本上是代码....:

-(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 点的位置,并确定是否应该调用 fire 方法?

谢谢

编辑:

我试图做第二个选项并做到了这一点:在 view controller.h 我添加了:

@interface fireView: UIView 
@end 

在 .m 中我添加了:

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

@end 

....但它不记录/打印“嗨”?

4

1 回答 1

0

使用 2 个UIGestureRecognizers。您可以创建 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:

于 2012-07-01T16:52:16.820 回答