Gyro 在 Cocos2D 环境中不工作
Posted
技术标签:
【中文标题】Gyro 在 Cocos2D 环境中不工作【英文标题】:Gyro not working in Cocos2D enviroment 【发布时间】:2012-06-20 15:42:04 【问题描述】:我遇到了一个非常奇怪的问题。我有一个基于 cocos2D 库的 AR 应用程序。最近,当我当天第一次启动 xcode 时,陀螺仪无法正常工作,即无论设备的方向如何,偏航和横滚都被测量为 0。它应该根据我在代码中执行的检查工作:
// Initialize Gyro
self.motionManager = [[[CMMotionManager alloc] init] autorelease];
motionManager.deviceMotionUpdateInterval = (1.0/60.0);
if (motionManager.isDeviceMotionAvailable)
NSLog(@"motion available");
[motionManager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXTrueNorthZVertical];
过去几天我通过注释掉一些我不再使用的内容或更改与屏幕上的精灵动画相关的内容来解决此问题。奇怪的是,我会让它在我剩下的编码会话中正常工作,关闭 xcode,第二天当我再次打开 xcode 和我的项目时,陀螺仪再次坏了。
有没有对 cocos2d 或陀螺仪有更多经验的人知道可能是什么原因造成的?
谢谢。
更新
我把这行注释掉了
[mySprite runAction:[CCMoveTo actionWithDuration:refreshRate position:ccp(newX, newY)]];
然后运行应用程序,陀螺仪再次工作。奇怪的是,当我取消注释同一行并再次运行应用程序时,陀螺仪仍然工作。什么给了?
【问题讨论】:
【参考方案1】:只是预感……motionManager
是保留财产吗?
因为如果没有,motionManager 将被自动释放:
self.motionManager = [[[CMMotionManager alloc] init] autorelease];
【讨论】:
是的,它被保留了,但我最终将其更改为类对象而不是属性(如 Apple 的 pARk 示例项目)。这让我发疯了。退出xcode后又发生了。以上是关于Gyro 在 Cocos2D 环境中不工作的主要内容,如果未能解决你的问题,请参考以下文章