本来想多了解了解`CMMotionManager`手机的陀螺仪的,并且用陀螺仪做了一个类似于手机的桌面的动态桌面,其实就是用陀螺仪的重力变化将图片位置稍微移动移动即可。
后来接触的越多了解的东西越多,毕竟自己摸索跟有大牛指引方向是不一样的,例如你自己摸索学了4年的ios真不如有大牛指引方向的3年,而且大牛只是给你说你需要学习什么,例如到一阶段了大牛告诉你需要了解`GCD、NSOperation`了,或者`Block`了。或者`UItransction`做动画,`CAlayer`做动画了。再接着告诉你需要了解你们正在做的项目框架结构了,设计模式的特点了。而自己摸索的你能做的就很有限了。曾经面试时有个面试官问我工作的年限,说真的我这4年多的经验可能跟有大牛指引方向的3年的一样,但是毕竟4年的项目经验,代码积累是3年的程序员比不了的。但是有些名词可能不太懂,别人说的什么高大上的设计模式,你自己明明做过但是你就是表达不出来的,没办法,你会做但是不会说依然被Pass。
好了说着说着就跑题了。今天主要说的是这个弹珠小游戏的实现。
下面下看下模拟器上的效果,模拟器上是没有重力感应的,如果使用真机可以看到来回颠倒后的小球碰撞效果。
整体说一下这个游戏的构成,里面包括倒计时(放到runloop,防止倒计时的误差);音乐后台播放\暂停\继续;重力感应、自定义界面的圆角处理、UIDynamicAnimator模拟实物等效果。
第一步:设置游戏背景,和自定义的设置界面。
这个实际上就是一个简单的图片,本来想把 3D效果的桌面壁纸效果拿过来的,想了想没必要,做个demo而已,别的地方用到了,就不在这个游戏中重新做了。
//游戏背景图片
UIImageView *gameBg = [UIImageView new];
gameBg.userInteractionEnabled = YES;
NSString *gameBgimagePath = [[NSBundle mainBundle] pathForResource:@"gameBack" ofType:@"jpg"];
gameBg.image = [UIImage imageWithContentsOfFile:gameBgimagePath];
[self.view addSubview:gameBg];
设置界面就是一个自定义的View,效果如下:
界面上的主要代码如下:
//透明全部背景
UIView *clearView = [UIView new];
clearView.backgroundColor = QFClearColor;
clearView.frame = self.bounds;
[self addSubview:clearView];
//半透明效果背景
UIView *lightView = [UIView new];
lightView.backgroundColor = QFBlackColor;
lightView