Swift - CoreMotion
1.加速传感器可以监听到x,y,z三个方向的加速度,步骤如下: 2.通知频率设置建议 3.x,z轴 4.加速度(原始加速度) 5.Gravity和UserAcceleration 6.测试样式 import UIKit import CoreMotion class ViewController: UIViewController{ var ball:UIImageView! var speedX:UIAccelerationValue = 0 var speedY:UIAccelerationValue = 0 var motionManager = CMMotionManager() override func viewDidLoad() { super.viewDidLoad() //放一个球在中央 ball = UIImageView(image: UIImage(named: "Ball")) ball.frame = CGRect(x: 0,y: 0,width: 50,height: 50) ball.center = self.view.center self.view.addSubview(ball) motionManager.accelerometerUpdateInterval = 1/60 if motionManager.isAccelerometerAvailable{ let queue = OperationQueue.current motionManager.startAccelerometerUpdates(to: queue!) { (accelerometerData,error) in if error != nil{ self.motionManager.stopAccelerometerUpdates() }else{ //动态设置小球位置 self.speedX += accelerometerData!.acceleration.x self.speedY += accelerometerData!.acceleration.y var posX = self.ball.center.x + CGFloat(self.speedX) var posY = self.ball.center.y + CGFloat(self.speedY) //碰到边框后的反弹处理 if posX<0{ posX = 0 //碰到左边的边框以0.4倍的速度反弹 self.speedX *= -0.4 }else if posX > self.view.bounds.size.width{ posX = self.view.bounds.size.width //碰到右边的边框以0.4倍的速度反弹 self.speedX *= -0.4 } if posY < 0{ posY = 0 //碰到上面的边框不反弹 self.speedY = 0 }else if posY > self.view.bounds.size.height{ posY = self.view.bounds.size.height //碰到下面的边框以1.5倍的速度反弹 self.speedY *= -1.5 } self.ball.center = CGPoint(x: posX,y: posY) } } }else{ print("你的设备不支持加速计") } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |