《iOS 6高级开发手册(第4版)》——1.11节秘诀:获取和使用设备姿势
本节书摘来自异步社区《iOS 6高级开发手册(第4版)》一书中的第1章,第1.11节秘诀:获取和使用设备姿势,作者 【美】Erica Sadun,更多章节内容可以访问云栖社区“异步社区”公众号查看
1.11 秘诀:获取和使用设备姿势
iOS 6高级开发手册(第4版)
设想有一部iPad放在桌子上。iPad上显示了一幅图像,可以弯曲并查看它。现在,设想旋转那个iPad,就像它平放在桌子上一样,但是当iPad移动时,图像不会移动。它保持与周围的世界完美对齐。无论怎样旋转iPad,图像都不会随着视图更新而“移动”,以平衡物理运动。这就是秘诀1-7的工作方式,利用设备的机载陀螺仪(这是必需的),使这个秘诀工作。
无论怎样握持设备,图像都会调整。除了这种水平操作,还可以拾起设备并在空间中定位它的方向。如果在手中翻转设备并查看它,就会看到图像的颠倒的“底部”。还可以沿着两根轴倾斜它:一根是从Home按钮指向照相机,另一根则从照相机与Home按钮的中点开始穿过iPad的表面。还有一根轴,它是你最先探讨过的,从设备的中间开始,指向设备上方的空间,并且穿过它下面的中点。在操纵设备时,图像会做出响应,在那个iPad内创建一个可视化的静态世界。
秘诀1-7显示了如何利用少量简单的几何变换来执行该操作。它建立了一个运动管理器,订阅设备运动更新,然后基于运动管理器返回的摇晃、前倾和左右摇摆的角度应用图像变换。
秘诀1-7 使用设备运动更新修正空间里的图像
- (void) shutDownMotionManager { NSLog(@"Shutting down motion manager"); [motionManager stopDeviceMotionUpdates]; motionManager = nil; } - (void) establishMotionManager { if (motionManager) [self shutDownMotionManager]; NSLog(@"Establishing motion manager"); // Establish the motion manager motionManager = [[CMMotionManager alloc] init]; if (motionManager.deviceMotionAvailable) [motionManager startDeviceMotionUpdatesToQueue: [NSOperationQueue currentQueue] withHandler: ^(CMDeviceMotion *motion, NSError *error) { CATransform3D transform; transform = CATransform3DMakeRotation( motion.attitude.pitch, 1, 0, 0); transform = CATransform3DRotate(transform, motion.attitude.roll, 0, 1, 0); transform = CATransform3DRotate(transform, motion.attitude.yaw, 0, 0, 1); imageView.layer.transform = transform; }]; }
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
《Android 3D 游戏案例开发大全》——6.1节游戏背景及功能概述
本节书摘来自异步社区《Android 3D 游戏案例开发大全》一书中的第6章,第6.1节游戏背景及功能概述,作者 吴亚峰 , 于复兴 , 杜化美,更多章节内容可以访问云栖社区“异步社区”公众号查看 6.1 游戏背景及功能概述Android 3D 游戏案例开发大全本节将对3D游戏开发进行简单介绍,通过本节的学习,读者可以对3D版推箱子游戏有初步的认识,并了解本章开发案例的游戏效果及具体功能。 6.1.1 游戏背景概述推箱子是一款来自日本的古老游戏,目的是训练逻辑思考能力。要求在一个狭小的空间内把木箱放在指定的位置,稍有不小心就会出现箱子无法移动或者通道被堵的情况。 推箱子游戏是一款老少皆宜的益智类游戏,虽然游戏画面与玩法简单,但趣味无穷。 6.1.2 游戏功能简介介绍详细的开发步骤之前,首先对整个游戏的功能和玩法进行一些简单介绍。使读者对该游戏有一个感性的认识,其具体步骤如下。 (1)运行本游戏,首先进入欢迎界面,其效果如图6-1和图6-2所示。 (2)当游戏的欢迎界面结束后,进入游戏的菜单界面,菜单界面的左面是机器人推箱子的动画;右面是菜单界面的不同选项,单击不同的选项会进入不同的界面...
- 下一篇
《libGDX移动游戏开发从入门到精通》一2.4 日志工具
本节书摘来异步社区《libGDX移动游戏开发从入门到精通》一书中的第2章,第2.4节,作者: 黄俊东 责编: 陈冀康,更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.4 日志工具 众所周知,日志在调试程序的时候起着非常重要的作用。这一节我们就来对比学习Android中的日志工具与libGDX中的日志工具。 2.4.1 Android中的日志等级及输出方法 在Android原生中,在程序中输出日志使用android.util.Log类。该类提供了若干静态方法。 Log.v(String tag, String msg); Log.d(String tag, String msg); Log.i(String tag, String msg); Log.w(String tag, String msg); Log.e(String tag, String msg); 分别对应Verbose、Debug、Info、Warning、Error。tag是一个标识,可以是任意字符串,通常可以使用类名+方法名,主要是用来在查看日志时提供一个筛选条件。 以下通过一个例子来演示使用Androi...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS8编译安装MySQL8.0.19
- Docker安装Oracle12C,快速搭建Oracle学习环境