4

这是我的小情况。我正在使用 uipanGesture 移动 ccsprite。我可以四处移动它没问题,而且我在屏幕上有一个可以使用 uitapgesture 拍摄的点。

-(void)handleTap:(UITapGestureRecognizer *)recognizer{

CGPoint location = [recognizer locationInView:recognizer.view];
location = [[CCDirector sharedDirector]convertToGL:location];
location = [self convertToNodeSpace:location];

if (location.x > winSize.width * .6 && location.y <winSize.height/2) {
  NSLog(@"fire");  
}

我添加了委托方法,所以当我平移时,我可以单击启动按钮:一切正常。

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
  return YES;
}

但是,当我不平移而只是使用 uitapgesture 射击时,我无法在射击时平移......我认为它发生的原因是因为它正在注册最后一次点击, recognizer.state == UIGestureRecognizerStateBegan因为我没有平移。

任何人都知道我可以点击而不是将点击注册为if (recognizer.state == UIGestureRecognizerStateBegan

我试过如果(location.x < winSize.width/2)但没有用。

4

2 回答 2

1

您可能需要使用 requireGestureRecognizerToFail 设置手势识别器链。这将意味着正在执行的手势将被迫失败,优先于第二个手势。

所以我想你想要你的[requireGestureToFail:]。

于 2012-06-11T00:29:16.630 回答
0

我不知道是否有人对这篇文章感兴趣,但我确实使用以下方法解决了 90% 之类的问题

  for(int i=0; i<[recognizer numberOfTouches]; i++){
    CGPoint pt = [recognizer locationOfTouch:i inView:recognizer.view];
    pt = [[CCDirector sharedDirector]convertToGL:pt];
    pt = [self convertToNodeSpace:pt];

   if (i==0) {
   //stuff
     }
于 2012-06-13T15:59:49.193 回答