虽然我在Objective C中编码,但这更像是一个普通的编程问题。
将不断变化的标量值转换为变化的间隔或频率的最佳方法是什么?
现在每次标量值改变时我都在破坏NSInterval
即
[self.myTimer invalidate];
self.myTimer = nil;
并创建一个新的,但这似乎是实现我的目标的一种非常昂贵的方式,因为在我的情况下标记值的变化表示滑动的水平速度。
粗略地比喻一下,想一下在视觉节拍器中反映的滑动速度,你刷的速度越快,节拍器的频率越高(间隔越短)。
答案 0 :(得分:1)
首先,要了解这是一个“测量”问题。要解决此问题,请隔离解决问题所需的最小属性,然后得出其余的属性。
移动的距离和移动距离所花费的时间是每次测量的导出属性,在这种情况下,测量被称为“滑动”。在赛车类比中,测量被称为一圈。 现在可以计算“速度”。这将是“速度”,它只是距离/时间。
可以根据滑动的起点和终点计算distance
。
要获取时间值,请使用startTime
1>在NSDate
和touchesBegan:withEvents:
计算touchesEnded:withEvents:
中创建elapsedTimeInterval
[startTime timeIntervalSinceNow];
实例{/ 1}}
根据您的需要,您可能需要一个Measurement
类,其中包含startPosition,endPosition,startTime和endTime属性,因此您可以跟踪“最快”的速度等。
按Analysis Patterns查看Martin Fowler。我发现在尝试将域问题映射到软件解决方案时非常有用。