【发布时间】:2013-04-01 20:56:36
【问题描述】:
我正在开发一款名为 RealBaseball 的 iPhone 应用程序。如果您熟悉 RealSoccer,它非常相似。它将允许您使用 iPhone 与世界各地的朋友一起打棒球。
当您用导电棒敲击 iPhone 屏幕时,它应该首先检测触摸事件,然后检测加速度,以便准确知道您何时敲击它,以及敲击的力度和速度。
这是我遇到一些技术难题的地方。我有标准的touchesBegan 和didAccelerate 听众。问题是didAccelerate 在touchesBegan 之前触发。显然,有些事情是错误的,因为它不应该在蝙蝠接触它之前开始加速。我可能缺少设置代码吗?
我需要解决这个问题,因为如果时机不对,另一端的击球机会滞后,而且不会有任何乐趣。
如果您能提供任何建议,我们将不胜感激。
编辑:我添加了一些格式化为 [[NSDate date] timeIntervalSince1970]; 的 NSLog 调用,这是输出:
didAccelerate: 1364850400.03221
touchesBegan: 1364850400.21486
所以你可以看到这是一个很小但很明显的区别。
【问题讨论】:
-
你能加入一些调试语句并在此处或 pastebin 上列出输出吗?我想我有预感出了什么问题,但一些确凿的事实永远不会伤害:)
-
@Milimetric,好主意,已编辑。
-
手机是放在平坦的表面上,还是拿在手里?另外,您是否尝试过使用 CoreMotion 框架并从 CMLogItem 类中读取时间戳属性?
-
@Lefteris,这头的击球机把它扔了,然后我用导电棒击打它。
标签: iphone ios accelerometer touchscreen touchesbegan