andriod游戏开发 第十一章 演员(actor)、视口(viewwindow),演出开始

andriod游戏开发 第十一章 演员(actor)、视口(viewwindow),演出开始

ID:20370839

大小:58.63 KB

页数:7页

时间:2018-10-12

andriod游戏开发 第十一章 演员(actor)、视口(viewwindow),演出开始_第1页
andriod游戏开发 第十一章 演员(actor)、视口(viewwindow),演出开始_第2页
andriod游戏开发 第十一章 演员(actor)、视口(viewwindow),演出开始_第3页
andriod游戏开发 第十一章 演员(actor)、视口(viewwindow),演出开始_第4页
andriod游戏开发 第十一章 演员(actor)、视口(viewwindow),演出开始_第5页
资源描述:

《andriod游戏开发 第十一章 演员(actor)、视口(viewwindow),演出开始》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、从零开始Android游戏编程(第二版)第十一章演员(Actor)、视口(ViewWindow),演出开始收藏第十一章演员(Actor)、视口(ViewWindow),演出开始本章内容与第七章、第八章关系非常密切,如果对这两章的内容不熟悉请大家先浏览一下七、八章,再回来看本章。Actor是一个接口,他的作用是统一类的行为(读者可以阅读一下Facede模式相关文章)。我们用一个比喻来说明:演员们有了各自的剧本,导演对所有演员说:做下一个动作!演员们就会各自行动。而不用导演分别告诉每个人,你要这样做,他要那样做。具体到程序中,帧动画、动态图块两种操作会调用完全不同的函数

2、,这样不利于在游戏循环中做出一致的处理。所以我们让他们都实现Actor接口,只要调用接口定义的函数,他们就会做出各自的动作。Actor接口的定义很简单:publicinterfaceActor{publicvoidtick();}对于实现了Actor接口的任何类型,发出的指令就只有一个:tick。下面请看实例演示:我们将创建两个类Tank和Map,分别继承自Sprite和TiledLayer,都实现Actor接口。为tank创建帧动画,为Map创建动态图块,然后将他们显示在SceneMain中。首先,我们可以复制第十章的例子创建一个新项目,并将第八章中用到的org.

3、yexing.android.games.common包拷贝到项目中。创建一个Tank类,继承自Sprite,实现Actor接口。在tick函数中播放帧动画publicvoidtick(){//TODOAuto-generatedmethodstubnextFrame();}然后创建一个Map类继承自TiledLayer,实现Actor接口。在tick函数中播放动态图块publicvoidtick(){//TODOAuto-generatedmethodstubif(getAnimatedTile(-1)==4){setAnimatedTile(-1,5);}els

4、e{setAnimatedTile(-1,4);}}最后在SceneMain中创建这两个类的实例并显示他们Layerlayers[]=newLayer[2];intmapdate[][]={{0,0,0,2,0,0,0,2,0,0,0,0,0},{0,1,0,2,0,0,0,1,0,1,0,1,0},{0,1,-1,-1,-1,0,1,1,0,1,2,1,0},{0,0,0,1,0,0,0,0,0,2,0,0,0},{3,0,0,1,0,0,2,0,0,1,3,1,2},{3,3,0,0,0,1,0,0,2,0,3,0,0},{0,1,1,1,3,3,3,2,0,0

5、,3,1,0},{0,0,0,2,3,1,0,1,0,1,0,1,0},{2,1,0,2,0,1,0,1,0,0,0,1,0},{0,1,0,1,0,1,1,1,0,1,2,1,0},{0,1,0,1,0,0,0,0,0,0,0,0,0},{0,1,0,0,0,1,1,1,0,1,0,1,0},{0,1,0,1,0,1,6,1,0,1,1,1,0},};publicSceneMain(){paint=newPaint();paint.setColor(Color.WHITE);paint.setTextAlign(Align.CENTER);BitmapbmpTan

6、k=BitmapFactory.decodeFile("/sdcard/player1.png");BitmapbmpTile=BitmapFactory.decodeFile("/sdcard/tile.png");Tanktank=newTank(bmpTank,32,32);tank.setFrameSequence(newint[]{0,1});Mapmap=newMap(13,13,bmpTile,32,32);map.createAnimatedTile(4);for(inty=0;y<13;y++){for(intx=0;x<13;x++){map.s

7、etCell(y,x,mapdate[x][y]);}}layers[0]=map;layers[1]=tank;}@Overridepublicvoidupdate(Canvasc){//TODOAuto-generatedmethodstubc.drawARGB(255,0,0,0);c.drawText("SceneMain",GameView.width/2,GameView.height/2,paint);for(inti=0;i<2;i++){((Actor)layers[i]).tick();layers[i].paint(c);}}需要读者关注的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。