1 / 6
文档名称:

Andriod游戏开发_第四章_响应用户事件.docx

格式:docx   页数:6
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Andriod游戏开发_第四章_响应用户事件.docx

上传人:陈晓翠 2012/3/20 文件大小:0 KB

下载得到文件列表

Andriod游戏开发_第四章_响应用户事件.docx

文档介绍

文档介绍:第四章响应用户事件
上一章介绍了如何显示文字和图片,一般来说,下一步就该讲到动画了。可是我们前面说了,使用View不是最终的选择,要实现动画还需要很多复杂的代码。相对来说,学习如何响应用户事件要简单些。
本章前半部分讲解按键事件的响应,但是这也不是最终方案,因为实际上的手机可能没有硬键盘,需要使用虚拟键盘,所以后半部分我们会讲解虚拟键盘的设计和实现。
同绘图一样,View也是通过回调函数来响应用户事件的。键盘事件的回调函数有多个,以对应不同的事件,我们暂时只用到onKeyDown,对应按键被按下的事件,其他函数以后用到再介绍。让我们重载onKeyDown(重载一个函数的方法前面章节有介绍):
***@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
return (keyCode, event);
}
onKeyDown有两个参数:keyCode和event,通过keyCode能判断是哪个键被按下,event比较复杂,包含了这次按键更多的信息,我们暂时先不考虑它。
现在我们要通过按键控制主角向四个方向移动。所谓移动,就是将主角的图像在不同的位置显示出来,也就是改变函数drawBitmap中的第二、第三个参数。比如用户按下右方向键,我们就把横坐标增加,这样下次显示出来的时候,主角就会往右一点。为了节约时间,我们就把刚刚显示的图片BattleCity作为主角好了。首先定义两个全局变量x和y,然后在onKeyDown中改变x、y的值,然后重绘View。因为代码没有什么难度,所以不做讲解了。
public class GameView extends View {
int x=0, y=0;
……
***@Override
protected void onDraw(Canvas canvas) {
……
(bmp, x, y, new Paint());
}
***@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
switch(keyCode) {
case :
y -= 10;
break;
case :
y += 10;
break;
case :
x -= 10;
break;
case :
x += 10;
break;
}
postInvalidate(); //通知系统重绘View
return (keyCode, event);
}
}
完成后我们肯定很想测试一下,但是此时你会发现,按键根本没有任何反应。这就是我们要特殊指出的地方。View被显示时,缺省情况下没有获得焦点,就是说,按键动作没