《iOS 6高级开发手册(第4版)》——1.5节秘诀:使用加速能力“向上”定位
本节书摘来自异步社区《iOS 6高级开发手册(第4版)》一书中的第1章,第1.5节秘诀:使用加速能力“向上”定位,作者 【美】Erica Sadun,更多章节内容可以访问云栖社区“异步社区”公众号查看
1.5 秘诀:使用加速能力“向上”定位
iOS 6高级开发手册(第4版)
iPhone提供了3个机载传感器,用于沿着iPhone的3根相互垂直的轴(左/右(x轴)、上/下(y轴)和前/后(z轴))度量加速能力。这些值指示作用于iPhone的力,它们来自重力和用户移动。可以通过在脑袋周围晃动iPhone(向心力)或者把它从高楼上投下(自由落体)来获得某种净力反馈。当然,如果不幸摔坏了,它也许不能取回这类数据。
要向iPhone加速计更新订阅某个对象,可把它设置委托。设置为委托的对象必须实现UIAccelerometerDelegate协议:
[[UIAccelerometer sharedAccelerometer] setDelegate:self]
在指定时,委托将会接收accelerometer:didAccelerate:回调消息,可以跟踪并对其做出响应。发送给委托方法的UIAcceleration结构包含x轴、y轴和z轴的浮点值,每个值的范围为—1.0~1.0:
float x = acceleration.x; float y = acceleration.y; float z = acceleration.z;
秘诀1-3使用这些值来帮助确定“向上”的方向。它会计算x和y加速度向量之间的反正切值,返回垂直向上的偏移角度。当接收到新的加速消息时,秘诀将会利用其箭头图片(在图1-1中可以看到它)旋转UIImageView实例,以指向上方。对用户动作的实时响应确保箭头会继续指向上方,而无论用户怎样改变手机的方向。
秘诀1-3 捕获加速事件
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration { // Determine up from the x and y acceleration components float xx = -acceleration.x; float yy = acceleration.y; float angle = atan2(yy, xx); [arrow setTransform: CGAffineTransformMakeRotation(angle)]; } - (void) viewDidLoad { // Initialize the delegate to start catching accelerometer events [UIAccelerometer sharedAccelerometer].delegate = self; }
图1-1 使用x和y方向的力向量,通过执行一个反正切函数,利用一点数学计算即可恢复“向上”的方向。在这个示例中,无论用户怎样改变iPhone的方向,箭头总会指向上方

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
《Android应用开发》——2.5节小结
本节书摘来自异步社区《Android应用开发》一书中的第2章,第2.5节小结,作者 【美】Chris Haseman,更多章节内容可以访问云栖社区“异步社区”公众号查看 2.5 小结Android应用开发在本章中介绍了一个Android应用的基本构件。通过示例介绍了以下几个方面: 清单文件;创建和使用活动;发送、接收和利用意图;创建应用对象。希望通过本书其他部分的学习,能够使用本章中学习的这些构件来理解一个Android应用的作用机制。从现在起,本书会更侧重介绍如何完成任务而不是背后的支持理论。就这一点来说,下面开始创建的屏幕不止包含一个文本视图。
- 下一篇
《Unity 3D 游戏开发技术详解与典型案例》——1.1节Unity 3D基础知识概览
本节书摘来自异步社区《Unity 3D 游戏开发技术详解与典型案例》一书中的第1章,第1.1节Unity 3D基础知识概览,作者 吴亚峰 , 于复兴,更多章节内容可以访问云栖社区“异步社区”公众号查看 1.1 Unity 3D基础知识概览Unity 3D 游戏开发技术详解与典型案例本节主要向读者介绍Unity 3D的相关知识,主要内容包括Unity 3D的简介、Unity 3D的发展和Unity 3D的特点等。通过本节的学习,读者将对Unity 3D有一个基本的认识。 1.1.1 初识Unity 3DUnity 3D是由Unity Technologies开发的一个轻松创建三维视频游戏、建筑可视化、实时三维动画等互动内容的、多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。 Unity类似于Director、Blender game engine、Virtools 或 Torque Game Builder等利用交互的图形化开发环境为首要方式的软件。其编辑器运行在Windows 和Mac OS X下,可发布游戏至Windows、Mac、Wii、iPhone和Android平台,...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Mario游戏-低调大师作品
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题