网站大量收购独家精品文档,联系QQ:2885784924

第4章 Java对多媒体的支持.doc

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 Java对多媒体的支持

第4章 Java对多媒体的支持   4.3 动画制作 初步掌握了在Java中处理各种媒体的基本技能后,我们接下来要涉及的将是Java多媒 体世界中最吸引人,最精彩的一部分--Java动画技术。这一节里,就让我们一起来由 浅入深地制作几个动画实例,并通过这些实例引出一系列措施用以改进动画的显示效果 ,直至真正掌握Java动画技术的关键。 4.3.1 一个简单实例 其实,Java的动画原理也是很简单的,首先在屏幕上显示动画的第一帧(也就是第一 幅画面),然后每隔很短的时间再显示另外一帧,如此往复。由于人眼的视觉暂停而感 觉好象画面中的物体在运动。我们已经掌握了用paint( )方法去显示静态帧的技能,接下 来的问题就是如何不断地替换上其它帧画面。 我们可以发现,当用paint( )方法在屏幕上画好一帧画面时,再用鼠标拖动这个窗口 ,或用其它窗口覆盖它再移开时,这帧画面并未被破坏,而是很快地就被重新画好了。原 来,是系统发现屏幕上该区域的画面已遭破坏,就自动地再一次调用paint( )方法将该画 面恢复。说得更确切一些,系统其实是去调用repaint( )方法来完成重画任务,而repaint ( )方法又去直接调用了update( )方法,update( )方法则先清除整个applet区域里的内 容,然后再调用paint( )方法,从而完成了一次重画工作。 至此,我们似乎应该可以确定制作动画的基本方案了,那便是在applet开始运行后 (即start( )方法中),每隔一段时间就取调用repaint( )方法来重画某一帧,而paint( ) 方法中只需将相应的帧画到屏幕上。这一方案是否正确呢?我们就先来做一个简单实例试 试看吧。 这个实例很简单,是在applet中显示一行欢迎标题Welcome to here!。与以前不同 的是,这行标题并不是一下子显示出来,而是象打字一般,一个个字母跳出来,然后全部 隐去,再重复刚才的打字效果。用动画的术语来说,第一帧显示空白,第二帧显示W, 第三帧显示We,直至最后一帧显示完整个字符串后,再循环到第一帧。根据上述提供的 制作方案,我们很快就可以写出下面的程序: 1: import java.awt.Color; 2: import java.awt.Font; 3: import java.awt.Graphics; 4; 5: public class RollingMessage extends java.applet.Applet{ 6: 7: String s = Welcome to Here !; 8: int s_length = s.length(); //字符串长度 9: int x_character = 0; //显示到第几个字符 10: Font wordFont=new Font(TimesRoman , Font.BOLD , 50); 11: 12: public void start() { 13: while(true) { 14: if (x_character++ s_length) 15: x_character = 1; 16: repaint (); 17: try { 18: Thread.sleep(300); //暂停300毫秒 19: } catch (InterruptedException e) {} 20: } 21: } 22: 23: public void paint (Graphics g) { 24: g.setFont (wordFont); 25: g.setColor (Color.red); 26; g.drawString (s.substring(0,x_character), 8, 50); 27: } 28: } 上述程序中的第18行调用了sleep( )方法,它是Thread类中定义的一个类方法(即含 有static关键字的方法),调用它能使正在运行着的程序暂停指定的毫秒数。如果不调用 sleep( )方法,appplet就会全速运行,必将导致动画的换帧速度太快,用户就来不及看 清动画的内容,得到的只有乱闪的画面。因而,动画的制作过程中需要不断地调整每帧 之间的时延数值,使其达到满意的播放速度。程序中的第17行和第19行可能看起来有点 古怪,其实try和catch是为了让我们能完善的处理Java程序运行时产生的错误,也就是 异常处理(详见第7章)。此时我们只需简单地认为,如果当程序正在执行try中的语句 时发生了异常情况,就由catch中的语句来处理。另外,

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档