文档介绍:该【建立游戏的运行框架 】是由【54156456】上传分享,文档一共【17】页,该文档可以免费在线阅读,需要了解更多关于【建立游戏的运行框架 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。单击此处添加文本具体内容,简明扼要地阐述你的观点202X第四讲建立游戏的运行框架主要内容:游戏的基本运行机制及其编写方法难点:双缓冲机制、获得稳定的FPS重点:游戏运行框架、AWT绘图机制、双缓冲机制、用线程处理游戏循环课时数: 绘制一个小球回顾:第三讲的绘图框架()提问:如何使其移动?回答:移动图形显示1游戏的最基本特征2进一步提问:如何移动图形显示?回答:不断地改变图形显示的位置,并重新绘制在屏幕上那么:技术上如何实现?回答:使用程序的循环结构,While(){改变小球坐标;重新绘制;}提问:while()循环放在何处?选择1:放在主类(GameFrame)×选择2:放在子类(drawBall)√步骤a:添加gameLoop()方法publicvoidgameLoop(){while(true){x++;repaint();}}步骤b:在主类中调用drawBall对象的gameLoop()方法改变小球绘制的坐标值重新绘制屏幕游戏的本质--死循环!要点1:AWT图形绘制机制AWT图形绘制机制图形绘制代码放置在组件的paint()方法中01程序不能直接调用paint()方法来绘制组件,而需调用组件的repaint()方法来重绘该组件02repaint()首先调用update()方法,然后调用paint()方法,默认的update()将进行清屏操作03当多个repaint请求同时作用在同一个组件上时,由于事件处理线程无法及时作出响应,将导致合并为一个repait请求04操作并演示:加入gameLoop()方法为什么没有显示小球?原因:循环执行得太快,导致repait请求无法及时响应解决:加入空循环为什么不能直接调用paint()原因:repaint()方法能调用update()方法清屏()问题3:为什么屏幕闪烁?原因:在同一个绘图表面上反复绘制并擦除解决:使用双缓冲机制(要点2)离屏渲染(RendertoOff-Screen)前屏显示(DrawtoOn-Screen)离屏渲染操作:步骤a:建立一个Image对象,并获取其Graphics对象(图象缓冲区)Imageim;im=creatImage(width,height);Graphicsdbg=();步骤b:();(x,y,diameter,diameter);前屏显示操作:获取当前屏幕的Graphics对象Graphicsg=();(im,0,0,null);();()