1

根据文档,CMAccelerometerData 类(在 Core Motion 框架中找到)具有CMAcceleration类型的属性,称为加速,它是包含 3 个值(双 x、双 y、双 z)的结构的 typedef

我对Objective-C相当陌生(我只知道C++ ..)所以我的问题是:在我的代码中的某个时刻,我如何访问,比如说保存在该属性中的双y值?

我是否首先像这样创建 CMAccelerometerData 类的实例:

CMAccelerometerData *myAccelerometer;

然后访问它的加速属性:

double axisYvalue = [myAccelerometer acceleration]; 

以上显然是错误的,不是吗?我必须在加速中找到 Y,所以我该怎么做?

double axisYvalue = [myAccelerometer acceleration->y]; // no this is wrong as well..

那么我该怎么做呢?

如果可以的话,还有最后一个问题:)

鉴于我提到的这个特定的类和属性..假设我已经实例化了我的 CMAccelerometer 类..现在每次,在我的代码中,我使用类似的东西

return [myAccelerometer acceleration->y]; // let's say that's the correct version :)

在一些 -(double) 方法中..我会在调用的那个特定时刻获得 Y 轴的值吗?

我之所以问这个问题是因为我在阅读现已弃用的 UIAccelerometer 类时感到困惑,在该类中您必须定义间隔并经常更新 x、y、z 的值等等。现在我可以获得正在执行的值在 Y 轴上调用加速属性的那一刻,不是这样吗?

唷...对不起这篇文章的长度!:)

4

2 回答 2

1

来自 C++,我认为假设您理解指针是安全的。第一行:

CMAccelerometerData *myAccelerometer;

...不是创建一个实例,而是声明一个指向实例的指针,它不会指向任何有效的东西。要获得一个有效的实例,您永远不会自己实际创建其中一个。相反,您将使用CMMotionManager类的accelerometerData属性来获取指向有效对象的指针:

// Sometime earlier...
CMMotionManager* manager = [[CMMotionManager alloc] init];
[manager startAccelerometerUpdates];

// Sometime in the present...
// Get a ref to the most recent accelerometer data.
CMAccelerometerData* data = [manager accelerometerData];

// Access it.
double x = [data acceleration].x;
于 2012-07-06T20:38:36.843 回答
0

您可以访问只读属性

myAccelerometer.acceleration

这将返回三个双精度的结构

myAccelerometer.acceleration.y (gives the y at that specific moment the call is being made)
于 2012-07-06T20:29:41.997 回答