快速业务通道

JBuilder 2005开发Applet游戏全接触 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24
们已经完成了Applet主要功能的开发,剩下的工作是如何通过按钮控制游戏。在编写控制代码之前,先为开始/暂停按钮(jButton1)和停止按钮(jButton2) 装饰一下,再编写控制代码。

1、为按钮添加图标

需要准备3张按钮的图标,图标为gif格式,尺寸大小为25×24象素。

·JBuilder 2005开发Applet游戏全接触 - 编程入门网:jButton1在结束和暂停状态的图标,命名为start.gif。

·JBuilder 2005开发Applet游戏全接触 - 编程入门网:jButton1在游戏处于运行状态的图标,命名为pause.gif。

·JBuilder 2005开发Applet游戏全接触 - 编程入门网:jButton2的图标,命名为stop.gif。当游戏处于暂停或运行状态时,jButton2才被激活。

将这些文件放置在TypeCharApplet.java源文件的目录下,即<工程根目录>/src/game目录下。

下面的代码使用java.awt.ImageIcon引用这3个图标,并在jbInit()中将图标显示到按钮上,如下所示:

代码清单 7 定义3个图标变量

1. … 2. public class TypeTrainApplet extends JApplet { 3.  … 4.  ImageIcon startIcon = new ImageIcon(TypeTrainApplet.class.getResource("start.gif")); 5.  ImageIcon pauseIcon = new ImageIcon(TypeTrainApplet.class.getResource("pause.gif")); 6.  ImageIcon stopIcon = new ImageIcon(TypeTrainApplet.class.getResource("stop.gif")); 7.  … 8.  private void jbInit() throws Exception { 9.   … 10.   jButton1.setIcon(startIcon);//设置开始按钮的图标 11.   jButton2.setIcon(stopIcon);//设置停止按钮的图标 12.   jButton2.setEnabled(false);//将停止按钮图标置为非激活态 13.   … 14.  } 15. }

第4~6用前面所述的图片初始化3个图标变量,其中TypeTrainApplet.class.getResource()方法以TypeTrainApplet.class所在目录为相对目录,查询资源文件。

第10~11行分别将开始和结束图标显示到对应的按钮上,当用户点击开始按钮后,才将jButton1的图标切换为暂停的图标pauseIcon。

2、通过按钮事件控制游戏

由于字母下落线程通过监测statusCode的值决定结束或暂停,所以我们仅需要通过按钮事件更改这个控制变量就可以达到控制游戏的目的了。

首先,我们打开TypeTrainApplet.java切换到Design的UI设计界面中,双击jButton1按钮,JBuilder自动为jButton1添加一个按钮点击事件监听器,并切换到Source视图中,将光标定位到事件处理方法处,我们在方法中添加以下粗体的代码:

代码清单 8 开始/暂停按钮事件处理方法

1. … 2. public class TypeTrainApplet extends JApplet { 3.  … 4.  public void jButton1_actionPerformed(ActionEvent e) { 5.   if (statusCode == 0) { //从结束->开始 6.    resetGame(); 7.    statusCode = 1; 8.    colWidth = canvas.getWidth() / columnCount; 9.    //实例化字母下落线程产生器 10.   GenerateDropThread gdThread = new GenerateDropThread(); 11.   gdThread.start();//产生器启动 12.   jButton1.setIcon(pauseIcon);//切换为暂停的图标 13.   jButton2.setEnabled(true);//停止按钮激活 14.  } else if (statusCode == 1) { //从运行->暂停 15.   statusCode = 2; 16.   jButton1.setIcon(startIcon); 17.  } else { //从暂停->运行 18.   statusCode = 1; 19.   jButton1.setIcon(pauseIcon); 20.   synchronized (canvas) {//通过canvas通知所有暂停的线程继续运行 21.   canvas.notifyAll(); 22.  } 23. } 24. this.requestFocus();//Applet接受光标,以便其接受按键事件 25. } 26. … 27. }

在jButton1的按钮点击事件处理方法里根据statusCode所标识的游戏状态分别进行处理:

·当statusC

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号