没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Android 游戏开发教程
本章要点:
游戏资源访问
游戏图形文字
游戏循环
游戏数学
游戏精灵
游戏场景
游戏声音
游戏控制
游戏技术的总结
游戏开发实战
知识目标
Canvas
Bitmap
Color
SurfaceView
OPEN GL ES
矢量
游戏循环与帧动画
碰撞检测
游戏场景与游戏精灵
能力目标
能够绘制基本图形
图层
帧动画
碰撞检测
具备基本的游戏开发能力
12.1 任务概述
本章将系统的学习 Android 游戏开发技术,在综合学习游戏各方面的技术基础上,
建立一个基本的 Android 游戏开发框架,然后基于游戏框开发“人间大炮”和“猎鸟
火柴人”的游戏案例。
人间大炮游戏截图
猎鸟火柴人游戏截图
12.2 任务分析
进行游戏开发需要掌握文件资源的访问,游戏中的绘图,游戏循环与帧动画;游戏中的
数学:矢量;面向对象的游戏编程模式比如实现:游戏精灵,游戏场景;游戏的控制技术
等等相关知识。接下来我们会对游戏中的相关技术分步讲解,并完成关键的代码编写。
12.3.3 游戏资源访问
玩游戏时,我们能看到漂亮的动画效果,动听的音乐,绚丽的特效等。这些都称为游
戏资源,游戏资源既包括图片,又包括各种音效,音乐等。在 Android 游戏开发中,音乐
和音效分别是 mp3 文件和 ogg 文件。游戏中的动画效果是由一系列连续变化的帧动画图片
来实现的,其实我们看电影也是这样的原理,有关联的一系列运动图片,连续快速切换,
我们就看到了动画效果,这些图片在 Android 游戏中使用的是 png 文件。
在 Android 游戏中我们通常把各种文件放置在 assets 文件夹中,下面展示游戏资源访问
的关键代码。
import android.content.res.AssetManager;
import android.graphics.*;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
InputStream inputStream=null;
Bitmap image=null;
AssetManager assets=this.getAssets();
try {
inputStream=assets.open("a.png");
image = BitmapFactory.decodeStream(inputStream);
inputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Android 系统为每个新设计的程序提供了/assets 目录,这个目录保存的文件可以打包在程序
中 。以上代 码 演 示 了 如何从 assets 文件 夹 中 加载图片 “ a.png” 到位 图 image 中 。 通 过
AssetManager 实现文件的读取,通过 BitmapFactory 把文件流解析成 Bitmap.
归纳总结以上代码后我们能实现图片读取方法:getImageFromAssets
Bitmap getImageFromAssets(String filename,AssetManager
assets)
{
InputStream inputStream=null;
Bitmap image=null;
try {
inputStream=assets.open(filename);
image = BitmapFactory.decodeStream(inputStream);
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
return image;
}
如果游戏资源过大,我们就需要把游戏文件放到外部存储卡中,下面展示访问外部
存储卡文件的关键代码:
import java.io.*;
import android.os.Environment;
....
String externalStoragePath=Environment.getExternalStorageDirectory()
.getAbsolutePath() + File.separator;
try {
InputStream inputStream= new
FileInputStream(externalStoragePath + "disc.txt");
OutputStream outputStream= new
FileOutputStream(externalStoragePath + "save.txt");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Environment.getExternalStorageDirectory 方法能获取存储卡的位置,有了文件的详细地
址后可以通过 InputStream 实现对文件的读取,通过 OutputStream 实现对文件写入。
游戏是很复杂的程序,需要综合各种技术(图形,声音,线程,数学,物理,控制)
才能完成,为了简化游戏的开发对关键技术进行封装处理,即编写相关的类,便于游戏开
发中直接进行调用,而不是重复的编写相同的代码,然后随着游戏规模的增大,终于复杂
到了开发者也无法理解的程度。
根据上述技术,编写游戏资源访问类:AndroidFileIO
package com.gaofeng.game;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Environment;
public class AndroidFileIO {
AssetManager assets;
String externalStoragePath;
剩余63页未读,继续阅读
资源评论
- 四月南风2015-08-10挺好的,非常有用
- kelei171812015-05-04太好的书了,我灰非喜欢,下的值得
大鱼987345
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功