Swift中的MotionDetection可以执行2种不同的动作吗?

时间:2018-12-22 15:38:35

标签: swift sprite-kit scenekit

我正在检测用户何时摇动手机。是否可以执行2个独立的动作?我的意思是先执行此操作1,然后再执行此操作2。

function getAppID(item, index) {  return item.appid; }
g_rgWishlistData.map(getAppID).join(",");

当我这样做的时候,只有第二个被执行

2 个答案:

答案 0 :(得分:0)

与其处理硬编码的延迟,不如将动画包装在CATransaction中,并在其完成处理程序中运行第二步:

override func motionBegan(_ motion: UIEvent.EventSubtype, with event: UIEvent?) {
   if motion == .motionShake {
      CATransaction.begin()

      let scene = makeScene()
      animationView.frame.size = scene.size
      animationView.presentScene(scene)

      CATransaction.setCompletionBlock {
         let scene2 = self.makeScene2()
         self.animationView.frame.size = scene2.size
         self.animationView.presentScene(scene2)
      }


      CATransaction.commit()
   }
}

答案 1 :(得分:-1)

通过在操作之间添加延迟来解决该问题。

override func motionBegan(_ motion: UIEvent.EventSubtype, with event: UIEvent?) {
    if motion == .motionShake {

        let scene = makeScene()
        animationView.frame.size = scene.size
        animationView.presentScene(scene)

        DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(4), execute: {

            let scene2 = self.makeScene2()
            self.animationView.frame.size = scene2.size
            self.animationView.presentScene(scene2)

        })


    }
    }
    }