欢迎来到天天文库
浏览记录
ID:26875978
大小:1.42 MB
页数:77页
时间:2018-11-29
《android游戏开发》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第五章android游戏开发本章的主要内容:5.1、android游戏开发框架5.2、Graphics类开发5.3、动画实现5.4、小结5.1View类开发框架View这个类是描绘块状视图的基类。View会绘制一个包含的Drawing是event事件的方形块,是所有与用户交互的组件的Widgets的基类(Buttons,textField等),View的子类ViewGroup是layouts类的基类,layouts类可以包含其他的View/ViewGroup组件并且定义展示的属性。游戏最重要的是与玩家交互,比如键盘输入、触笔点击等事件。android中提供了onKeyUp、on
2、KeyDown、onKeyMultiple、onKeyPreIme、onTouchEvent、onTrackballEvent等方法,可以轻松地处理游戏中的时间消息。所以在继承View时,需要重载这几个方法,当有按键按下或弹起的时候,会自动调用方法来处理。游戏的核心是不断地绘图和刷新界面,图我们可以通过onDraw方法绘制。android中提供了invalidate方法实现界面的刷新。注意:invalidate不能直接在线程中调用,他违背了单线程模型。UI操作并不是线程安全的,这些操作必须在UI线程中执行。android中最常用的方法是利用Handler来实现UI的更新。实例演
3、示下面通过实现一个在屏幕上不停变换颜色的矩形来分析android的界面更新。该实例中,我们通过Handler对象并重写了handleMessage方法实现一个消息的接收器,然后在线程中通过sendMessage()方法发送更新界面信息,当接收器收到更新界面的信息时,便执行Invalidate方法实现更新在屏幕上显示。(Example_05_1)运行结果如下5.1.2SurfaceView类开发框架上一节讲解了View类的游戏开发框架,当需要开发复杂的游戏的时候,对程序的执行效率要求很高时,这时必须使用SurfaceView类进行开发。例如对于速度很高的游戏可以使用双缓冲技术来显
4、示。游戏中的人物、背景、动画等都需要画在一个画布上,而SurfaceView可以直接访问这个画布。SurfaceView是提供给需要直接画像素而不是使用窗体部件的应用使用的。android图形系统一个重要的概念是surface、View及其子类要画在画布上,每一个Surface创建一个Canvas对象。来管理View在Surface上的绘图操作。在使用SurfaceView开发时需要注意的是,使用它绘图时,一般都是出现在最顶层。使用时还需要对其进行创建、销毁,情况改变时进行监视,这就要实现SurfaceHolder.Callback接口,如果要对被绘制的画布进行裁剪,控制其大小
5、时都需要使用SurfaceHolder来完成处理。在程序中,SurfaceHolder对象需要通过getHolder方法来获得,同时还需要addCallback方法来添加“回调函数”。SurfaceView和View的明显不同之处在于,SurfaceView不需要通过线程来更新视图,但在绘制之前必须使用lockCanvas方法锁定画布,并得到画布,然后在画布上绘制;当绘制完成后,使用unlockCanvasAndPost方法来解锁画布,于是才能显示在屏幕之上。SurfaceView类的事件处理则和View一样。实例演示本例通过SurfaceView类实现一个游戏框架,该实例绘制
6、了一个不断变换颜色的圆,并且实现了SurfaceView的事件处理。我们按上下键时,图形可以移动。其控制整个应用流程的Activity类与上一节差不多。下面是运行结果演示(具体代码见书本P115)。运行结果展示5.2Graphics类开发前面我们已经分析了android中游戏开发中常用的两个视图类的开发框架,下面学习如何使用android中的Graphics类绘制图形。要开发游戏,必须会在屏幕上绘制2D图形,在android中需要通过Graphics类来显示2D图形。Graphics类包含了Canvas(画布)、Paint(画笔)、Color(颜色)、Bitmap(图像)、2D
7、几何图形等常用类。5.2.1Paint和Color类简介要绘图,首先得调整画笔,待画笔调整好之后,再将图像绘制到画布上,这样才可以显示在手机屏幕上。Android中的画笔是Paint类,Paint中包含了很多方法对其属性进行设置,主要方法如下:etAntiAlias:设置画笔的锯齿效果。 setColor:设置画笔颜色setARGB:设置画笔的a,r,p,g值。 setAlpha:设置Alpha值setTextSize:设置字体尺寸。setStyle:设置画笔风格,空心或者实心。setS
此文档下载收益归作者所有