Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2171309
  • 博文数量: 436
  • 博客积分: 9833
  • 博客等级: 中将
  • 技术积分: 5558
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-29 10:27
文章存档

2013年(47)

2012年(79)

2011年(192)

2010年(118)

分类:

2011-04-20 22:12:19

第七次报告

研究题目:Android手机游戏开发

小组成员:李安 李想

本周计划:

欢迎界面的设计与实现。①主类KLSDActivity实现 ②欢迎界面WelcomeView类的实现 ③刷帧线程WelcomeViewDrawThread类的实现 ④动画生成线程WelcomeViewGoThread类的实现

游戏的架构

一. 主类KLSDActivity实现

该类是通过继承和扩展基类Activity来实现的,是整个程序的入口,主要是根据收到的Handler消息的不同切换到不同界面。

Handler myHandler = new Handler(){//用来更新UI线程中的控件

鉴于我们还没有开发其他类,若是写了代码会由于找不到那些类而报错,因此我们先构思好它的算法,等完成每一部分以后再书写这个主程序。

主类的开发步骤

二. 欢迎界面WelcomeView类的实现

WelcomeView类是本游戏的欢迎界面,主要负责欢迎界面的绘制。onDraw方法是该类中最重要的方法。

KLSDActivity activity;//activity的引用

WelcomeViewDrawThread welcomeViewDrawThread;//刷帧线程

WelcomeViewGoThread welcomeViewGoThread;//动画生成线程

*图片的ID,将其封装在一个数组里,方便进行管理,如下图:

int[] bitmapsID = new int[]{//图片ID

R.drawable.w1,R.drawable.w2,

R.drawable.w3,R.drawable.w4,

R.drawable.w5,R.drawable.w6,

R.drawable.w7,R.drawable.w8,

R.drawable.w9,R.drawable.w10,

R.drawable.w11,R.drawable.w12,

R.drawable.w13,R.drawable.w14,

R.drawable.w15,R.drawable.w16,

R.drawable.w17,R.drawable.w18,

R.drawable.w19,R.drawable.w20,

R.drawable.w21,R.drawable.w22,

R.drawable.w23,R.drawable.w24,

R.drawable.w25,R.drawable.w26,

R.drawable.w27,R.drawable.w28,

R.drawable.w29,R.drawable.w30,

};

Bitmap[] bitmaps;//图片数组

int drawIndex = 0;//当前绘制第几帧 

从上面的数组中可以看到,一共有30帧,生成动画界面时,会对这30帧进行循环

*闪烁的文字需要drawString这个变量来控制

boolean drawString = false;//是否绘制文字

*两只画笔

Paint paint;//画笔

Paint paint2;

*在构造器中,要创建两个线程,这两个线程会在后边介绍到。

public WelcomeView(KLSDActivity activity) {//构造器

super(activity);

this.activity = activity;//得到activity的引用

getHolder().addCallback(this);//添加Callback接口的实现

initBitmap();//调用初始化方法

welcomeViewDrawThread = new WelcomeViewDrawThread(this);

welcomeViewGoThread = new WelcomeViewGoThread(this);

}

*下面便进行初始化图片、绘制方法、屏幕的监听方法

public void initBitmap()

protected void onDraw(Canvas canvas)

public boolean onTouchEvent(MotionEvent event)

*接口中三个接口的方法,在方法中启动绘制线程以及动画线程

三.刷帧线程WelcomeViewDrawThread

————欢迎动画界面的服务线程

1.操作流程:

1欢迎动画界面(welcomeView)的引用——>睡眠的时间(sleepSpan,此处设为100s)——>循环的标记位>  构造器(在这之中只需得到欢迎界面的引用,再根据欢迎动画界面得到surfaceholder的引用)

2重写run方法,使其在适当的时间调用onDraw方法进行绘制即可,每隔sleepSpan的毫秒数依次调用OnDraw方法,在调用之前许要锁定整个画布,然后在调用之后释放画布,更新屏幕中的内容

3循环标记位的set方法

2.代码实现

四.动画生成线程WelcomeViewGoThread类的实现

这部分可以使我们的游戏的欢迎动画动起来。

1) 得到WelcomeView的引用

public WelcomeViewGoThread(WelcomeView welcomeView) {//构造器

this.welcomeView = welcomeView;//得到welcomeView的引用

2) 有一个run方法, 每次循环将欢迎界面的drawIndex加1,然后判断是否到达数组的最后,当到达最后时,将减10,然后继续循环。

public void run() {//重写的run方法法

 while (flag) {//循环

 welcomeView.drawIndex++;//自加

 if(welcomeView.drawIndex>welcomeView.bitmapsID.length-1){

 welcomeView.drawIndex = welcomeView.bitmapsID.length-10;

 }

 if(welcomeView.drawIndex%5 == 0){

 welcomeView.drawString = !welcomeView.drawString;

 }

 try{

 Thread.sleep(sleepSpan);//睡眠

 }catch(Exception e){

 e.printStackTrace();//打印异常信息 }}}

3) 循环标志为flag的set 方法

public void setFlag(boolean flag){//循环标志位的设置方法

this.flag = flag;}

下周计划:

下周我们将对“帮助”和“关于”界面进行设计与实现。觉得做起来这个东西挺难的,有一些方法、类的调用掌握的不是很好,写点东西困难挺大的。这个游戏的类很多,我们要分不同的线程去编写,要在原本主要代码的基础上加一些东西,不是很简单。

还有三周的时间,尽量可以把这个游戏做的完整些,虽然这种智力类的游戏开发的人很多,类似的东西也很多,当我们想通过自己去做一遍来体会android开发。也许以我们的能力,要开发出来一个新的东西并不是很容易,但是我们会在这个游戏上去加一些东西得以实现。

文件: 第七次报告.pdf
大小: 678KB
下载: 下载

阅读(1243) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~