在swift中在循环外运行时,CMAltitude总是返回nil

时间:2016-06-19 03:52:31

标签: ios swift sprite-kit swift2 cmmotionmanager

最近,我一直在编写一款需要设备间距才能移动角色的游戏。然而,为了使得用户不必每次都在固定在一个起始点的设备上玩游戏,每次用户按下游戏时我希望应用程序获得初始倾斜。但这不起作用,我添加了一个测试按钮,假设它运行代码:

  func recordTilt() {
  InitialTilt = MovementManager.deviceMotion?.attitude
  print(InitialTilt)
  }

这个问题是每当按下按钮时,InitialTilt将返回nil。但是,如果InitialTilt在循环中运行,则每次都会返回一个值。

运动经理循环:

func setup() {
  MovementManager = CMMotionManager()
  MovementManager.deviceMotionUpdateInterval = 0.1
  MovementManager.startDeviceMotionUpdates()
  InintialTilt = Movementmanager.deviceMotion?.attitude

}

func movementManaging() {
//...
InintialTilt = Movementmanager.deviceMotion?.attitude // returns every
time
//...
}

func update() {
movementManaging()
}

有人可以帮我解释为什么(InintialTilt = Movementmanager.deviceMotion?.attitude)只在循环中返回一个值。

(注意:motionManaging基本上是一个控制玩家动作的循环,如果要扩展玩家......他们会得到的一切都是保留玩家的方法在屏幕上。+ InintialTilt = Movementmanager.deviceMotion?.attitude)

0 个答案:

没有答案