Android游戏开发基础part6--动画
Android游戏开发基础part6--动画
动画想必大家不陌生了,一些大型游戏,比如《真实赛车》、《极品飞车》、《斯巴达英雄》、《彩虹六号》等等我玩过的大型游戏都有过场动画,很多精彩的特效。这些动画让游戏变得更加生动和震撼。动态的元素在游戏是必不可少的,这些动态元素可能是角色的移动、爆炸的效果、过场的特效等等。
针对动画这一块《Android游戏编程之从零开始》介绍得并不多,它主要讲了两种实习方式:
1.系统提供的Animation类特效
2.开发者自行设计的的动画
下面进行学习总结:
Animation动画
在Android中,系统提供了动画类Animation,其中分为四种动画效果:
·AlphaAnimation:透明度渐变动画;
·ScaleAnimation:渐变尺寸缩放动画;
·TraslateAnimation:移动动画;
·RotateAnimation:旋转动画;
4种动画效果具体创建方法:
1.Animation alphaA = new AlphaAnimation(float fromAlpha,float toAlpha)
第一个参数:动画开始时的透明度
第二个参数:动画结束时的透明度
两个参数的取值范围为[0,1],从完全透明到完全不透明
2.Animation scaleA = new ScaleAnimation(float fromX,float formY,float toY,int pivotXType,float pivotXValue,int pivotYType,float pivotYvalue)
第一个参数:动画起始时的X坐标上的伸缩比例
第二个参数:动画结束时的X坐标上的伸缩比例
第三个参数:动画起始时的Y坐标上的伸缩比例
第四个参数:动画结束时的Y坐标上的伸缩比例
第五个参数:动画在X轴相对于物体的位置类型
第六个参数:动画相对于物体X坐标的位置
第七个参数:动画在Y轴相对于物体的位置类型
第八个参数:动画相对于物体Y坐标的位置
位置类型分为三种:
·Animation.ABSOLUTE:相对位置是屏幕的左上角,绝对位置;
·Animation.RELATIVE_TO_LEFT:相对位置是自身View,取值为0时,表示相对于是自身的左上角,取值为1是相对于自上的右下角;
·Animation.RELATIVE_TO_PARENT:相对于父类View的位置
3.Animation translateA = new TranslateAnimation(float fromXDelta,float toXDelta,float fromXDelta,float toYDelta)
第一个参数:动画起始时X轴上的位置
第二个参数:动画结束时X轴上的位置
第三个参数:动画起始时Y轴上的位置
第四个参数:动画结束时Y轴上的位置
4.Animation rotateA = new RotateAnimation(float fromDegrees,float toDegree,int pivotXType,float pivotXValue,int pivotYType,float pivotYValue)
第一个参数:动画起始时的旋转角度
第二个参数:动画旋转到的角度
第三个参数:动画在X轴相对于物体的位置类型
第四个参数:动画相对于物体的X坐标的开始位置
第五个参数:动画在Y轴相对于物体的位置关系
第六个参数:动画相对于物体的Y坐标的开始位置
以上四种创建方法就是四种不同动画效果的创建方法,虽然他们的创建方法不同,但是还是用一些通用的方法:
·restart():重新播放动画
·setDuration:设置动画播放时间,单位是毫秒
创建项目:AnimationProject
项目运行效果:
初始化效果:
==>透明渐变效果:
==>缩放动画效果:
==>位移动画效果:
==>旋转动画效果:
项目源代码:
==>Animation.java
==>MyView.java
系统的四种动画效果就这样完了,下面是自定义动画类型:
1.动态位图
2.帧动画
3.剪切图动画
概念总结:
动态位图:顾名思义,会动的位图,只要不断改变位图的坐标,实现位图的移动,产生动态效果就行啦
帧动画:学过flash的童鞋肯定知道帧动画,所谓帧动画就是一帧一帧按照一定顺序进行播放实现,实现方法也很简单,定义一个位图数组存放全部帧,在绘图函数中不断绘图就行了
剪切画动画:是游戏开发中最常用的实现方式,类似于帧动画,唯一区别在于动态物体的动作帧全部放在同一张图片中,然后在通过设置可视区域完成。
分别创建三个项目实现它们,具体的代码不再粘帖,有兴趣的请参考《Andriod游戏编程之从零开始》