| 文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 软件分类 | 推荐下载 | 设为首页| |
软件下载网络学院数码学院资源论坛在线书吧
手机 | 数码相机 | 数字随身听 | 数字摄像机 | 数码储存 | 笔记本电脑 | 台式电脑 | DIY配件 | 掌上电脑 | 其他数码 | 服务器 | 精品栏
当前位置:清风数码学院手机经验及技巧 → Java游戏编程初步(5)
Java游戏编程初步(5)
日期:2005年4月5日 作者: 人气: 查看:[大字体 中字体 小字体]






四、多媒体

  使用多媒体声音

  多媒体功能在游戏中是必不少的一部分,优美的音乐,漂亮的界面往往是一个成功游戏必需具备的条件。

  在开始之前我们先了解一下主要的小型声音文件类型:

  AU - (扩展名为AU或SND)适用于短的声音文件,为Solaris和下一代机器的通用文件格式,也是JAVA平台的标准的音频格式。AU类型文件使用的三种典型音频格式为: 8位μ-law类型(通常采样频率为8kHz), 8位线性类型,以及16位线性类型。

  WAV - (扩展名为WAV)由 Microsoft和 IBM共同开发,对WAV的支持已经被加进Windows 95并且被延伸到Windows 98. WAV文件能存储各种格式包括μ-law,a-law和 PCM (线性)数据。他们几乎能被所有支持声音的Windows应用程序播放。

  AIFF - (扩展名为AIF或IEF)音频互换文件格式是为Macintosh计算机和Silicon Graphics (SGI)计算机所共用的标准音频文件格式。AIFF和 AIFF-C几乎是相同的,除了后者支持例如μ-law和 IMA ADPCM类型的压缩。

  MIDI - (扩展名为MID)乐器数字接口MIDI是为音乐制造业所认可的标准,主要用于控制诸如合成器和声卡之类的设备。

  在JDK1.0上,java只支持*.au格式的声音文件,但是java2的API以及声音包提供了很强大的对声音技术的支持。而此部分为了让大家快速掌握游戏编程的基本知识,我们仅使用了AudioClip接口类来实现播放"*.wav"。如果大家有兴趣可参考sun java网站的声音sapmle,上面提供了完备的实例和教程说明。

  使用AudioClip接口比较简单,我们只要实例对象,加载声音文件后,再在任何地方播放即可。恢复和播放声音最简单的方法是通过Applet类的play()方法。

  AudioClip接口

   1.播放 play
   2.循环 loop
   3.停止 stop

  启动和停止声音文件,或循环播放,你必须用 applet的 getAudioClip方法把它装载进入 AudioClip对象,getAudioClip方法要用一个或两个参数,当作播放的指示。第一个或唯一的一个参数是 URL参数,用来指示声音文件的位置,第二参数是文件夹路径指针。

  下列代码行举例说明加载声音文件进入剪贴对象: 下面的"gun.wav"是指当前目录下的声音文件。我们也可用*.au格式的文件代替。

AudioClip co = getAudioClip(getCodeBase(), "gun.wav");  

  getAudioClip()方法仅仅能被applet内调用。随着JAVA2的引入,应用程序也能用Applet类的newAudioClip方法装入声音文件。前一例子可以改写如下以用于Java应用程序:

AudioClip co = newAudioClip(“gun.wav”) 

  我们现在可在任何地方使用方法play()播放我们的声音了。play()一旦被调用立刻开始恢复和播放声音。但这有一点要注意:如果声音文件不能被查找,将不会有出错信息,仅仅是沉默。

图片处理技术

  图片的处理和声音的处理在一样简单。设置图片变量,得到图形,最后绘制图形。我们就直接从代码来分析。在此我们绘制一幅applet的背景图。开始绘制前,我们先要声明图形变量,用来存放图形文件。

Image backImage; 

// 加载图片文件
backImgage = getImage (getCodeBase (), "black.gif");
 

  下面在我们的paint()方法中利用函数drawImage绘制我们图形。

g.drawImage (backImage, 0, 0, this); 

  DrawImage参数中的blackImage即我们得到的图形,而后面的0,0分别代表图形的x坐标和y坐标.this:为图形代表的类,这里指的即picture类。在这里建议大家使用*.gif格式的图片文件。因为如果是internet网上,文件的大小也决定了你的applet加载时的快慢,没有人很愿意等很长时间来玩你的游戏,即使你的游戏比较出色。源代码及演示程序下载.

  大家在玩游戏时是不是见过人物图像行走?动物来回跑动的动画?这些都是基于图形技术来实现的。我们只要把上面的代码稍微修改,用数组变量来存储我们得到的图形文件组,再利用drawImage()方法播放出来就可实现动画图片的播放.

Image[] backImage; 

// 加载图片文件

for (int i=4,i<backImage.length,i++)

{
backImgage[i] = getImage (getCodeBase (), "t1"+i+".gif");

}

  大家可参考JDK包中的Animation例子,它就是一个很好的播放一组图片文件的例子。

五、事件处理 

  鼠标监听技术

  玩游戏时,不管是小型的扑克牌和大型的RPG游戏,都要参与者溶入到游戏的角色当中。不错,交互,游戏有了交互的功能才可以说是一个完整的游戏。即使是编程游戏如机器人足球,Robocode都要程序员参与编写代码,观察比赛。有两种主流方法可实现游戏的交互:鼠标和键盘。当然还包括手操杆等,但现在大部分Pc机上使用的还是鼠标和键盘。我们就以这两项为基础来说明游戏中事件的响应过程。

  要判断相应的鼠标所进行的动作:是点击,还是移动。我们必须对我们鼠标进行监听。要监听鼠标事件就必须调用这些接口之一,或扩展一个鼠标适配器(mouse adapters) 类. AWT 提供了两种监听接口(listener interface): java.awt.event.MouseListener 和 java.awt.event.MouseMotionListener.

  现在我设计一个鼠标事件,当点击applet屏幕时,下降的球向反方向运动。以实现了对游戏的简单控制。

  MouseListener一共有5个方法,主要用来实现鼠标的点击事件。这里要注意一点:由于MouseListener是接口我们要在实现的类中重载它的所有方法. 

  Mouse点击事件

   · mousePressed() 当用户按下鼠标按钮时发生.

   · mouseReleased() 当用户松开鼠标按钮时发生.

   · mouseClicked() 当用户按下并松开鼠标按钮时发生. 用户在选择或双击图标的时候通常会点击鼠标按钮. 用户如果在松开鼠标之前移动鼠标,点击不会导致鼠标相应事件出现.

   · 因为点击鼠标是按下鼠标和松开鼠标的结合, 在事件分配给 mouseClicked() 方法之前, mousePressed() 和 mouseReleased() 方法已同时被调用.

(出处:http://www.abcdown.net)

Java游戏编程初步(5) 相关文章:
·Java游戏编程初步(1)
·Java游戏编程初步(2)
·Java游戏编程初步(3)
·Java游戏编程初步(4)
·Java游戏编程初步(6)
Java游戏编程初步(5) 相关软件:
·《闪客帝国精华集2》光盘---编程方面的源代码
·《电脑编程技巧与维护》2002年度随书光盘精简版(修复!)
·VB.NET编程精彩百例
·ASP.NETXML深入编程技术
·ASP 3高级编程
·JSP高级编程
·VB 和 SQL Server 编程指南
·SQL高级编程管理指南(001)
·ASP编程完全手册 v1.0(CHM)
·asp编程技术与综合实例演练(PDG)

特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://digi.abcdown.net
广告宣传
特别推荐
·多款手机应用技巧与经验谈(2..
·设置小灵通的呼叫转移
热点TOP10
·手机 小灵通解密大全
·【索尼爱立信】技巧与应用
·Java游戏编程初步(1)
·Java游戏编程初步(5)
·Java游戏编程初步(2)
·Java游戏编程初步(6)
·三星E338行货和水货各种版本..
·Java游戏编程初步(3)
·Java游戏编程初步(4)
·设置小灵通的呼叫转移
·小灵通检修方法与技巧
·制作各牌手机铃音:东风破--周..
·如何设置小灵通的呼叫转移
·多款手机应用技巧与经验谈(1..
·N900改机系列之三:小巧耳机的..
关于我们 | 帮助(?) | 广告服务 | 版权声明 | 网站地图 | 友情连接 | 联系我们 | 软件发布
Copyright 2005-2005 abcdown.net All Rights Reserved. 鄂ICP备05000083号
Powered by:mesky