如果对此进行研究,我已经做了很多工作,但我还没有找到答案。
基本上,我正在用 Objective-C 为 iPhone 制作一个掷骰子应用程序。我希望能够使用“倾斜”功能来掷骰子。例如,如果用户将他的设备与地面保持水平,则骰子将结算。但是,如果用户随后将他的设备向右倾斜,所有骰子都会向右“滚动”,直到达到极限。
怎样才能以那种方式利用此功能?而且,如果可能的话,我想将角度存储在整数、浮点数、双精度或 NSString 中,这样我就可以有效地使用它,并轻松地测试应用程序。
如果对此进行研究,我已经做了很多工作,但我还没有找到答案。
基本上,我正在用 Objective-C 为 iPhone 制作一个掷骰子应用程序。我希望能够使用“倾斜”功能来掷骰子。例如,如果用户将他的设备与地面保持水平,则骰子将结算。但是,如果用户随后将他的设备向右倾斜,所有骰子都会向右“滚动”,直到达到极限。
怎样才能以那种方式利用此功能?而且,如果可能的话,我想将角度存储在整数、浮点数、双精度或 NSString 中,这样我就可以有效地使用它,并轻松地测试应用程序。
不幸的是,我无法评论或否决链接到 2007 年(甚至在官方 SDK 发布之前)不包含相关 API 信息的帖子的答案。
最好使用官方的最新指南:http: //developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/MotionEvents/MotionEvents.html
以上将向您展示如何获取一些原始数据;它不会进行实现“滚动”模拟所需的所有计算。
你可以通过加速度计来做到这一点。当您倾斜设备时,加速度计将为您提供 xyz 轴值。为此添加一个属性,它是 UIAccelerometer 类的类型。
UIAccelerometer* theAccelerometer;
现在您定义频率和委托。您应该从要开始接收的位置编写此代码。
theAccelerometer = [UIAccelerometer sharedAccelerometer];
theAccelerometer.updateInterval = 1 / 50;
theAccelerometer.delegate = self;
现在您必须添加委托方法
-(void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration{
myX = acceleration.x;
myY = acceleration.y;
myZ = acceleration.z;
}
好的,现在您的值以 50 [意味着 20 毫秒] 的频率频繁更新。现在,如果您想停止接收这些值,显然您应该在离开此视图后停止接收,如下所示:
theAccelerometer.delegate = nil
您可以再次开始接收加速度计数据,将委托分配给自己
theAccelerometer.delegate = self;
如果您有任何进一步的问题,您可以在 Skype 上联系我 behestee