IOS CoreMotion

原创 2015年11月18日 21:59:29



import UIKit

import CoreMotion


class ViewController: UIViewController,UIAccelerometerDelegate {
    
    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=CGRectMake(0,0,50,50)
        ball.center=self.view.center
        self.view.addSubview(ball)
        
        motionManager.accelerometerUpdateInterval = 1/60
        
        if(motionManager.accelerometerAvailable)
        {
            let queue = NSOperationQueue.currentQueue()
            motionManager.startAccelerometerUpdatesToQueue(queue!, withHandler:
                { (accelerometerData : CMAccelerometerData?, error: NSError?) -> Void in
                    
                    //动态设置小球位置
                    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=CGPointMake(posX,posY)
            })
        }
    }
}


相关文章推荐

iOS高级进阶_CoreMotion

  • 2014年02月26日 21:51
  • 57KB
  • 下载

CoreMotion框架-iOS设备的核心运动

我们知道iOS的应用真的太多了,很多应用让我们惊叹不已!!!很多意想不到的应用! 比如: 1.电子罗盘指南针之类的应用-让我们知道方向。 2.运动类型软件-让我们知道我们跑步多少公里...

IOS_加速计_CoreMotion框架_单例_时钟_Get+异步请求+Json

H:/1019/01_加速度accelerometer原始方法_AppDelegate.h// // AppDelegate.h // 加速计-01.传统用法 // // Created by ...

iOS计步器功能实现之CoreMotion如何读取数据(二)

上篇文章写了如何简单实现记步功能,但是作为一款app我们不仅仅要实现记步功能,还要对记录的数据进行整理,更好的呈现给用户,发送给后台,保存用户的运动信息等。在上篇文章中提到过获取用户运动信息的方法如下...

ios中陀螺仪CoreMotion的使用

以前在iphone中要得到加速度时,只能使用Accelerometer模块得到重力加速度分量,然后通过滤波得到加速度值。其实在ios中有一个陀螺仪模块,CoreMotion,使用更方便。 Core...

iOS使用CoreMotion实现摇一摇功能

现在网上介绍的iOS摇一摇功能,基本是以借助系统的ShakeToEdit功能来实现,什么是ShakeToEdit?看下图应该就能懂: 此方式怎么实现呢? //ViewController 加入以下...
  • ejialin
  • ejialin
  • 2014年02月20日 17:36
  • 1903

iOS开发-CoreMotion框架(加速计和陀螺仪)

iOS开发-CoreMotion框架(加速计和陀螺仪) CoreMotion是一个专门处理Motion的框架,其中包含了两个部分加速度计和陀螺仪,在iOS4之前加速度计是由UIAccelerom...

iOS 探讨之 传感器库(CoreMotion.framework)

阐述 还是来几句没有涵养的话吧~ 传感器是个好东西,但是太难理解了,太难玩了,找了几篇像样的资料,整合一下,记录之。...

ios CoreMotion 的用法,获取手机加速度与偏转角度

ios CoreMotion 的用法,获取手机加速度与偏转角度

CoreMotion框架-iOS设备的核心运动

我们知道iOS的应用真的太多了,很多应用让我们惊叹不已!!!很多意想不到的应用! 比如: 1.电子罗盘指南针之类的应用-让我们知道方向。 2.运动类型软件-让我们知道我们跑步...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IOS CoreMotion
举报原因:
原因补充:

(最多只允许输入30个字)