对持续触摸采取行动,而不是仅仅在开始 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中进行更新时不采取行动