文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java动画及自动浏览图片程序怎么开发

2023-06-03 05:36

关注

这篇文章主要讲解了“Java动画及自动浏览图片程序怎么开发”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java动画及自动浏览图片程序怎么开发”吧!

电影和电视的画面可以理解为一种动画显示,它们一般以每秒24帧的速度显示图象,利用人眼的暂停效应,产生一个连续的动作显示过程。因此,动画的本质是运动的图形,只要动画的速度(帧速度)足够快,则分散的的静态图形就会合并为一个连续运动的流程。

Java动画的实现,首先用Java.awt包中Graphics类的drawImage()方法在屏幕画出图象,然后通过定义一个线程,让该线程睡眠一段时间,到时后再切换成另外一幅图象,如此循环,从而达到显示动画的目的。

1 有关概念、类及方法

1.1 线程

Java的重要特性之一是其支持多线程的程序设计。在传统的程序设计中,要执行多任务是通过定时器中断等方法,定时监控多个任务的执行情况,采用任务中断切换的方式来轮换执行各个任务,从而达到多任务并发目的。这种方法一方面消耗了大量的内存空间和cpu资源,另一方面会带来系统安全性的问题。而线程作为程序的一个执行流,在某一瞬间可被看成计算过程的一种状态,它比进程更小,并发程度更高,因此也称为轻进程。线程是cpu调度的基本单元,而进程是资源分配的基本单元,线程的引入可以提高系统的吞吐量、提高任务之间的通讯效率、有效利用系统资源。

?线程的创建

线程创建有两种方法,一种是用new产生一个Thread类对象,另外一种方法是实现Runnable接口。在需要实现多继承,并且又要建立多线程时,只能采用Runnable接口方法。我们这里采用第一种方法:

ThreadName=new Thread

?sleep(long)

让线程睡眠一定时间不动作,参数单位为千分之一秒。

?suspend()

挂起线程,暂停其执行。

?resume()

唤醒挂起的线程。

1.2 ToolKit类

它提供了AWT与平台相关类和无关类之间的链接,提供了几种方法来访问与设备相关的一些特征。如从URL或本地系统中检索图象、获取屏幕的显示特征等。在程序中定义一个ToolKit类:ToolKit=getToolKit();

1.3 MediaTracker类

提供了管理图象文件加载的能力。方法StatusID(int id,boolean load)的作用是检测加载图象文件的状态(ABORTED,COMPLETE,ERRORED,LOADING),当检测到状态为COMPLETE时,说明图象加载完成。

2 文字动画

文字动画的实现程序比较简单,首先,用new方法创建一个新进程,用drawString()方法在屏幕显示相应文字,然后让进程睡眠一定时间,时间到后,改变文字显示位置,再重显文字。其中包含一个边界判断,重设坐标的过程,如此往复实现文字动画。程序运行后,在屏幕中央显示"欢迎进入动画世界!",每隔0.15秒向左移动一次,直到屏幕最左端又重新开始显示。具体程序见程序1(Applet小程序)。

3 图象动画

图象动画的实现方法与文字相似,只不过定义了一个Image数组,运用getImage()方法装载相应图象文件到该数组中。程序运行后,可见到一个可爱的小精灵在作抛球动作。另外,基于程序交互性的考虑,增加了两个事件的响应动作,一个是WINDOW_DESTROY,即关闭运行窗口,正常返回。另外一个是MOUSE_DOWN,当鼠标左按钮按下时,暂停线程以便让画面静止,再按一次左按钮,恢复暂停线程,继续显示下一幅画面。

如果将程序中的小精灵图象文件换成图片,并增加延迟时间,则可以实现图片的自动切换,变为自动浏览图片程序,源程序见程序2,

4 动画质量的改善

上一程序的运行后,我们发现了两个问题。第一是程序在图象完全加载之前就开始显示,出现切换过快现象。第二是画面闪烁。

对于前一个问题,可以用Java.awt包中的MediaTracker类来解决,当StatusID()方法返回值为COMPLETE时,说明所有的图象文件加载完毕,此时才开始显示画面。

第二个问题,解决起来要复杂一些。闪烁产生的原因是,在paint()方法中如果计算较为复杂,计算和绘制画面的时间超过了屏幕的刷新周期,则帧的第一部分在一个刷新周期中绘制,其余部分在下一个、甚至更后的周期绘制,这样,在帧的不同部分之间产生时间间隔,由此造成闪烁。解决途径之一是重载update()方法,update()的缺省实现是清除原来背景,然后调用paint()方法。因此通过重载update(),只有在必要时才清除整个背景。

解决途径之二是采用双缓冲技术,双缓冲技术是在后台图形区内创建一个图形对象,将需要绘制的图象绘于其上,然后传给paint()方法,由paint()方法绘于前台,同时,后台图形缓冲区进入下一帧图象的准备。图1为双缓冲技术示意图。

感谢各位的阅读,以上就是“Java动画及自动浏览图片程序怎么开发”的内容了,经过本文的学习后,相信大家对Java动画及自动浏览图片程序怎么开发这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯