- 1
- 0
- 约3.89千字
- 约 16页
- 2017-01-10 发布于北京
- 举报
[第三章游戏程序设计之基本框架2
《游戏程序设计教程》 人民邮电出版社 作者:何青 出版时间:2011年 ISBN:9787115248428 问题导入:绘制一个小球 回顾:Java2D绘图框架 提问:如何使其移动? 回答:移动图形显示 进一步提问:如何移动图形显示? 回答:不断地改变图形显示的位置,并重新绘 制在屏幕上 那么:技术上如何实现? 回答: 使用程序的循环结构, While(){ 改变小球坐标; 重新绘制; } 1.移动的小球 提问:while()循环放在何处? 选择1:放在主类(GameFrame) × 选择2:放在子类(drawBall) √ 步骤a:添加gameLoop()方法 public void gameLoop() { while(true) { x++; repaint(); } } 步骤b:在主类中调用drawBall对象的gameLoop()方法 AWT图形绘制机制 图形绘制代码放置在组件的paint()方法中 程序不能直接调用paint()方法来绘制组件,而需调用组件的repaint()方法来重绘该组件 repaint()首先调用update()方法,然后调用paint()方法,默认的update()将进行清屏操作 当多个repaint请求同时作用在同一个组件上时,由于事件处理线程无法及时作出响应,将导致合并为一个repait请求 操作并演示:加入gameLoop()方法 问题1:为什么没有显示小球? 原因:循环执行得太快,导致repait请求无法及时响应 解决:加入空循环 问题2:为什么不能直接调用paint() 原因:repaint()方法能调用update()方法清屏 问题3:为什么屏幕闪烁? 原因:在同一个绘图表面上反复绘制并擦除 解决:使用双缓冲机制(要点2) 离屏渲染操作: 步骤a:建立一个Image对象,并获取其Graphics对象(图象缓冲区) Image im; im=creatImage(width,height); Graphics dbg=im.getGraphics(); 步骤b:在Image上渲染图形 dbg.setColor(Color.blue); dbg.fillOval(x, y, diameter, diameter); 前屏显示操作: 步骤a:获取当前屏幕的Graphics对象 Graphics g = this.getGraphics(); 步骤b:绘制Image图象缓冲区中的内容 g.drawImage(im,0,0,null); 步骤c:释放当前屏幕的Graphics对象 g.dispose(); 实现更加复杂的移动 改进1:斜向移动 改进2:小球移出边界后从另一边出来 改进3:随机移动 改进4:弹跳(作业) 2.游戏的运行框架 对gameLoop()中的代码进行封装: gameLoop(){ while(true){ gameUpdate(); gameRender(); gamePaint(); } } 3.创建新的线程 为何创建新线程? 作用1:减轻主线程压力,提高执行效率 主线程—用于响应用户事件 子线程---用于处理游戏循环 创建步骤: a. 在drawBall类上实现Runnable接口 b. 将游戏循环放置在run()方法中 c.实例化线程并启动(Thread.start()) 作用2:获得稳定的FPS(帧速率) (要点4) Tread.sleep(sleepTime); 如何合理设置sleepTime? 另外的选择: 使用TimerTask类(自学) 4.移植到Applet版本 继承Applet类,并实现Runnable接口 重载线程的run()方法,加入游戏循环代码 重载Applet.int(),初始化 重载Applet.start(),建立并启动线程 重载Applet.stop(),终止线程 第3章 游戏程序的基本框架(2) ——建立游戏循环 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Cop
您可能关注的文档
- [第三届全国大学生机械创新设计大赛决赛作品选集.ppt
- [第三季度报分析.ppt
- [第三次课程.ppt
- [第三场班主任如何借力发力、让学生参与班级管理.ppt
- [第三章.国际营销政治和法律环境.ppt
- [第三章-美国.ppt
- [第三单元构建发展阶梯.ppt
- [第三单元软件质量管理活动.ppt
- [第三章3静定结构受力分析平面刚架.ppt
- [第三章Matlab的数据类型.ppt
- 2025-2026学年天津市和平区高三(上)期末数学试卷(含解析).pdf
- 2025-2026学年云南省楚雄州高三(上)期末数学试卷(含答案).pdf
- 2025-2026学年甘肃省天水市张家川实验中学高三(上)期末数学试卷(含答案).docx
- 2025-2026学年福建省厦门市松柏中学高二(上)期末数学试卷(含答案).docx
- 2025-2026学年广西钦州市高一(上)期末物理试卷(含答案).docx
- 2025-2026学年河北省邯郸市临漳县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省石家庄二十三中七年级(上)期末历史试卷(含答案).docx
- 2025-2026学年海南省五指山市九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省唐山市玉田县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省邢台市市区九年级(上)期末化学试卷(含答案).docx
最近下载
- 传媒法规与伦理教学课件(共22章)新闻伦理研究综述.pdf VIP
- 汽车行驶记录仪产品使用说明书.PDF VIP
- 2026年成都市美容医疗诊所医美项目安全规范运营可行性研究报告.docx VIP
- ocean培训petrel re快速入门工作流程.pdf VIP
- (四年级奥数班讲义.doc VIP
- 单病种病案数据填报指导手册.doc
- 企业 IPO 筹备方案(最新版,附时间表 + 材料).docx VIP
- 深圳初三数学联考模拟试题.docx VIP
- 高考历史二轮总复习精品课件 第四板块 世界现代史 第十七讲 现代科技的发展与当今世界发展的趋势.ppt VIP
- 2024年菏泽职业学院单招数学考试模拟试题及答案解析.docx VIP
原创力文档

文档评论(0)