- 浏览: 120484 次
- 性别:
- 来自: 广州
文章分类
最新评论
游戏中最常见的元素就是图片了,想让一个游戏中的角色看起来更生动,单靠简单的移动和旋转图片是远远不够的,我们应该为角色添加动画,“动起来”的角色看起来既生动又贴近现实,具有更好的用户体验。那么动画在游戏中是如何实现的呢?
我们拿当今红的发紫的【捕鱼达人】这个游戏来说明。
如果我们有这样一张图片,想让这只鲨鱼动起来是很简单的一件事情,我们只需要将这张图片再每帧绘制的时候改变坐标就可以了。
代码片段如下:
…
matrix.setTranslate(x,y);
canvas.drawBitmap(fish.getImg(),matrix,paint);
x--;
…
我们在一个循环中,一直改变变换矩阵的坐标,将x向左平移,这样在每次绘制鲨鱼的时候,看起来就可以游动了。
但是。这样的效果是不是很傻?为什么呢?一眼就能看出来,因为鱼没有动作嘛!看起来像是一条死鱼在顺流飘动而已。这样的用户体验是糟糕的。那么我们怎么解决这个问题呢?很简单,因为我们可以使用多张图片来完成这个。我们再绘制的过程中,一直变换鲨鱼的图片,这样就能使鲨鱼看起来更生动了。
我们先来准备一组图片~
图片就不一一举例了,当我们有了这样一组图片后,我们就可以绘制出看起来更加生动的鲨鱼了。
代码上我们来这样做。
…
Bitmap acts[] = new Bitmap[4];
acts[0]= BitmapFactory.decodeResource(
gameActivity.getResources(),
R.drawable.shark01);
acts[1] = BitmapFactory.decodeResource(
gameActivity.getResources(),
R.drawable.shark02);
acts[2] = BitmapFactory.decodeResource(
gameActivity.getResources(),
R.drawable.shark03);
acts[3] = BitmapFactory.decodeResource(
gameActivity.getResources(),
R.drawable.shark04);
…
有了这样一组表示鲨鱼动作的图片后,我们就可以在绘制图片的时候循环这个动作图片的数组,来让鲨鱼“活起来了”。
有经验的程序员一眼就能看出问题:这样做不好吧?创建鲨鱼的动作图片的代码是写死在程序上的,这样不利于维护。什么意思呢?如果后期我们发现鲨鱼的动作不够流畅,想添加一帧鲨鱼的动作,这时候怎么办?我们修改代码?加上下面这句话?
acts[4] = BitmapFactory.decodeResource(
gameActivity.getResources(),
R.drawable.shark05);
看起来很好,但是我们在做程序的时候,总不能每次做了一点点改动都要修改程序吧?这样会带来什么问题呢?关键在于用户,用户总不希望我们每次修改了一下游戏,就要重新下载一遍完整的程序不是么?他们更希望看到的是,一次简单的更新。那我们怎么做呢?
好吧,我们来通过配置文件,定义一下鲨鱼的动作有多少,还有一点,我们不要吧鲨鱼的图片分开成不同的文件,我们可以用一张图片来描述所有的鲨鱼动作,在初始化鲨鱼的时候,通过鲨鱼动作的配置文件来分割这张图,达到上面的效果。
配置文件我们采取xml文件格式,android有这完善的解析xml的工具,简单方便。
Xml配置文件片段如下:
…
<key>010001.png</key>
<dict>
<key>frame</key>
<string>{{378, 438}, {374, 144}}</string>
<key>offset</key>
<string>{-2, 7}</string>
<key>sourceColorRect</key>
<string>{{61, 51}, {374, 144}}</string>
<key>sourceSize</key>
<string>{500, 260}</string>
</dict>
<key>010002.png</key>
<dict>
<key>frame</key>
<string>{{384, 294}, {380, 142}}</string>
<key>offset</key>
<string>{1, 7}</string>
<key>sourceColorRect</key>
<string>{{61, 52}, {380, 142}}</string>
<key>sourceSize</key>
<string>{500, 260}</string>
</dict>
…
我们在配置文件中规定了鲨鱼的每一帧图片的左上角坐标以及图片的宽度和高度。
<string>{{384, 294}, {380, 142}}</string>
这样就可以从鲨鱼的图片中将它裁剪出来做成一帧图片来存放在动作图片数组中。
鲨鱼的动作图片是这样的:
类似这样,我们就可以取到每一帧的动作了。
然后我们再循环这个动作数组,就可以改变鲨鱼的动作了。
那么,每次更新的时候,我们只需要将鲨鱼的动作图片上添加新的动作,再修改一下xml文件,就可以在不修改源程序的情况下达到添加鲨鱼动作的目的啦~这样不是很好么?
发表评论
文章已被作者锁定,不允许评论。
-
stopSelf()与stopSelf(startId)的区别
2016-04-14 14:44 1106startId:表示启动服务的次数 stopSelf(sta ... -
安装/卸载/替换成功广播接收
2016-01-08 11:59 789<receiver android:name=" ... -
ContentProivder
2015-12-09 09:26 486ContentProvider 我们实现了其中的几个方法 ... -
Android获取网络时间
2015-11-19 11:27 11771、实时获取: LocationManager locatio ... -
android animation知识
2015-11-14 11:47 574<?xml version="1.0" ... -
代码中设置android:drawableTop等
2015-11-14 10:42 1016btnAttachment.setCompoundDrawab ... -
自定义View
2015-11-04 15:09 400一般来说,自定义View都会去重写onMeasure()方法, ... -
SimpleOnGestureListener
2015-11-04 12:03 539onScroll()缓慢滑动,手指滑动屏幕的过程中执行; on ... -
设置dialog在底部并宽度全屏显示
2015-11-02 11:53 2288pickerDialog.setContentView(vie ... -
横竖屏切换使用 android:configChanges="orientation|keyboardHidden"无效
2015-10-29 10:51 1778在之前的版本中都是在Manifest文件中设置Activity ... -
Dialog注意点
2015-10-28 17:14 510dialog:setCancelable与setCancele ... -
清除setBackgroundResource的原有值
2015-10-23 16:50 1157setBackgroundResource(0);清除原有的s ... -
接收隐式意图
2015-10-22 11:29 543想接收隐式意图,必须在他们的意图过滤器中配有:android. ... -
严苛模式
2015-10-14 20:25 1373//启用严苛模式,StrictMode可以用于捕捉发生在应用程 ... -
Android使用Animation完成动画保留最后一帧的办法
2015-09-08 10:43 2417在动画效果的xml中,在set标签中加上一条android:f ... -
控件getHeight和getWidth等于0的解决办法
2015-09-07 17:27 1420//监听layoutContainer是否初始化完成 l ... -
Service和Thread的区别?
2015-08-19 13:25 494servie是系统的组件,它由系统进程托管(servicema ... -
避免内存泄露
2015-08-18 19:21 4791、尽量避免在Activity使用static。 2、能使用A ... -
需要context的时候用activity还是application?
2015-08-17 17:02 747需要context的时候用activity还是applicat ... -
谈谈UI中, Padding和Margin有什么区别?
2015-08-10 17:18 1097Padding 文字对边框, margin是控件与控件之间的距 ...
相关推荐
接下来,我们将深入探讨`SurfaceView`以及如何在Android游戏中实现动画。 1. **SurfaceView的基本概念**: - `SurfaceView`是一个可以在窗口上创建一个独立于应用程序主UI线程的显示区域的视图。 - 它包含一个`...
在Android游戏开发中,动画是提升用户体验和...总的来说,AuroraGT作为一款强大的Android游戏开发动画编辑器,为开发者提供了丰富的动画制作工具,降低了游戏开发的门槛,提升了开发效率,有助于打造更出色的游戏作品。
在Android开发中,动画是提升用户体验的关键元素之一。"Android晃动动画例子"是一个...在提供的`ShakeDemo`项目中,应该包含了上述步骤的具体实现,你可以通过查看和运行这个项目来更好地理解和学习晃动动画的制作。
在Android开发中,动画是提升用户体验的关键因素之一。Android提供了三种主要类型的动画:帧动画、补间动画和属性动画。接下来我们将深入探讨这三种动画的基本实现。 **1. 帧动画 (Frame Animation)** 帧动画是...
《强大的Android游戏动画编辑器——Motion Welder深度解析》 在Android游戏开发的世界里,生动有趣的动画效果无疑能极大地提升游戏的用户体验。今天我们要聚焦的主角是“Motion Welder”,一款专为Android游戏设计...
同时,对于`Myunlity3D`文件,可能包含与Unity3D游戏引擎相关的资源,虽然与Android帧动画直接关联性不大,但可以结合使用,比如在Unity中制作3D动画,然后导出到Android进行集成,实现跨平台的交互体验。
学习这个项目,开发者不仅能掌握Android应用开发的基本流程,还能深入理解游戏开发的原理,包括图形绘制、动画制作、事件处理和游戏逻辑设计等。这对于进一步开发更复杂的游戏或者增强现有应用的交互性都是非常有...
在Android应用开发中,逐帧动画是一种常见的动画形式,它通过连续播放一系列静态图像来创造出动态效果,类似于传统的动画制作过程。"Android 逐帧动画源码.zip" 提供了一个项目实例,帮助开发者深入理解这一技术。这...
它适用于简单的、有限的动画场景,如加载图标或者游戏中的角色移动。 2. **补间动画(Tween Animation)**:补间动画是基于属性的变化,通过对两个关键帧之间的值进行插值计算来实现平滑过渡。主要涉及平移、旋转、...
这6个游戏项目覆盖了Android游戏开发的核心技术,如自定义View、动画、触摸事件处理、游戏逻辑和碰撞检测等。通过学习这些源码,开发者可以提升自己的Android原生开发能力,尤其是针对游戏应用的技能。无论是对初学...
总之,Android游戏开发中的View框架是一个综合性的主题,涵盖了图形绘制、事件处理、布局设计、动画制作和性能优化等多个方面。掌握好这些知识点,能够帮助开发者构建出高性能、富有吸引力的Android游戏。
此外,它还可能涉及到2D图形渲染、碰撞检测和动画制作。 2. **PushBox**:推箱子 推箱子游戏是一种经典的益智游戏,源代码将展示如何设计游戏关卡,实现物体移动和碰撞处理,以及如何使用栈或其他数据结构来管理...
开发者可以通过这个项目学习到Android应用的基本架构,UI设计,事件处理,动画制作,音频处理,传感器使用,以及游戏逻辑的实现方法。对于想要提升Android开发技能,尤其是对游戏开发感兴趣的朋友,这是一个极好的...
### Android App中使用SurfaceView制作多线程动画的实例讲解 #### SurfaceView的定义与应用场景 在Android开发中,为了确保应用的流畅性和响应性,通常需要将耗时操作(如网络请求)放在非UI线程中进行。然而,...
在Android平台上开发一款翻牌游戏,如"Android翻牌游戏-寻觅红桃A",是一种常见的编程练习,它能够帮助开发者熟悉Android Studio环境、理解Android应用的基本结构以及掌握一些基本的游戏逻辑。以下是对这个项目的...
通过分析这个源码,我们可以深入理解Android游戏编程的关键技术,包括图像渲染、事件处理、游戏逻辑、动画制作等。 首先,Android游戏的核心在于对用户输入的响应和游戏状态的更新。在这个打飞机游戏中,`Activity`...
源码中涉及到的图形渲染部分,包括UI设计、精灵动画、碰撞检测等,都是Android游戏开发中的关键技术。我们可以从中了解到如何使用Android的Canvas和Bitmap进行2D图形绘制,以及如何利用OpenGL ES实现更复杂的3D效果...
这款游戏展示了Android开发中的多个核心知识点,包括图形处理、动画制作、音频播放以及游戏逻辑设计等。下面我们将深入探讨这些关键领域的技术细节。 首先,帧动画是游戏中常见的视觉表现手法,它通过连续播放一...
源码中会有关于动画状态机和动画序列的代码,这对于学习Android游戏动画设计非常有帮助。 再者,游戏的状态管理也是关键。游戏中可能存在多个状态,如游戏开始、游戏进行、游戏结束等,开发者可能使用状态机模式来...
Android提供了多种动画实现方式,其中包括逐帧动画,这是一种简单但效果丰富的动画形式,常用于游戏或动态图标的制作。本篇文章将详细探讨Android逐帧动画的基本用法。 逐帧动画在Android中通过`AnimationDrawable`...