【问题标题】:Gyro not working in Cocos2D enviromentGyro 在 Cocos2D 环境中不工作
【发布时间】: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)]];

然后运行应用程序,陀螺仪再次工作。奇怪的是,当我取消注释同一行并再次运行应用程序时,陀螺仪仍然工作。什么给了?

【问题讨论】:

    标签: iphone cocos2d-iphone gyroscope


    【解决方案1】:

    只是预感……motionManager 是保留财产吗?

    因为如果没有,motionManager 将被自动释放:

    self.motionManager = [[[CMMotionManager alloc] init] autorelease];
    

    【讨论】:

    • 是的,它被保留了,但我最终将其更改为类对象而不是属性(如 Apple 的 pARk 示例项目)。这让我发疯了。退出xcode后又发生了。
    猜你喜欢
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    • 2015-01-23
    • 2016-07-07
    • 1970-01-01
    • 2021-12-08
    • 2014-04-06
    • 2017-12-07
    相关资源
    最近更新 更多