对持续触摸采取行动,而不是仅仅在开始 touchesBegan 时采取行动:

Posted

技术标签:

【中文标题】对持续触摸采取行动,而不是仅仅在开始 touchesBegan 时采取行动:【英文标题】:Take action on sustained touch instead of just when getting touchesBegan: 【发布时间】:2016-11-06 19:29:53 【问题描述】:

我正在编写游戏,当用户触摸屏幕的左侧或右侧时,“持续级别”会增加。目前,仅当用户第一次触摸屏幕时才会增加(我的代码如下)。我希望只要用户将手指放在屏幕上,就可以应用增加。我该怎么办?

-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event
      UITouch *touch = [touches anyObject];
      CGPoint touchPoint = [touch locationInView:self.view];

      if (self.x >= touchPoint.x)
          self.sustain += 1;

      else if (self.x <= touchPoint.x)
          self.sustain += 1;

      

【问题讨论】:

【参考方案1】:

增加。目前延音水平仅在您第一次触摸屏幕时增加,我希望只要用户将手指放在屏幕上就可以施加力

当用户保持手指不动时,您不会收到任何消息;您的下一条消息将是touchesEnded。所以你需要启动一个 timer 并且每次定时器触发时根据需要不断增加力,直到你得到touchesEnded

【讨论】:

【参考方案2】:

您需要弄清楚您希望这种增长以多快的速度发生。然后使用计时器机制来更改值。这可能是一个NSTimer,它会在一定的时间间隔内重复触发:当你得到touchesBegan:时启动计时器,当你得到touchesEnded:时停止它

如果您使用的是 SpriteKit,场景有一个内置的计时器来触发其update: 方法。您可以使用标志来指示存在触摸并更改update: 中的“维持”值。

【讨论】:

以上是关于对持续触摸采取行动,而不是仅仅在开始 touchesBegan 时采取行动:的主要内容,如果未能解决你的问题,请参考以下文章

想要对准则2 ORM进行删除时不采取任何行动,而对于更新2则ORM中进行更新时不采取行动

iOS Touch而不是touchDown?

iOS:在相机预览期间捕获图像而不采取行动

html5 touch 触摸事件如何监听一个手指多次来回摩擦触发事件?

手机端html5触屏事件(touch事件)

如何对日期更改采取行动?