java双缓冲原理_利用Java语言的双缓冲技术实现计算机动画

计算机动画是指用程序或工具生成一系列的静态画面,然后通过画面的连续播放来反映对象的运动变化过程.近年来,由于科学技术的不断进步,计算机动画技术已成为综合运用计算机图形学、物理学、机械学、心理学、美学、生命科学及人工智能等科学或领域的知识,用来研究客观存在或高度抽象的物体的运动表现形式的一种高新技术,已经越来越成功地运用到科学研究、教育领域当中.语言中动画实现的基本模式都是运用线程,在一定时间间隔内放映一定帧数的图像,利用人的视觉暂留造成动态效应,即在连续时间内、在连续的位置上输出图像,从而实现了图像的移动.如让图片慢慢地消失,然后再慢慢地出现,就象是拉动布幕一样,这就是最简单的动画.这个动画效果的制作过程并不困难,只要学会加载、显示影像的方法,再加上简单的循环,就可以完成此动画.具体实现过程如流程图1所示.需要指出的是,此程序虽然实现了动画,但有相当明显的闪烁现象存在.因为我们每一次调用()时,就等于调用(),而()所作的工作就是先消除背景,然后再去调用的()方法完成重画动作.当程序试图清除影像时,在一个短暂的时间内,整个区域完全呈现原来的底色,而没有影像存在,虽然时间非常短暂,但是对于人的眼睛已经造成闪烁的感觉了.很显然,消除画面的频率越快,闪烁现象越严重.这个问题在显示速度比较慢的机器上或者重画动作比较多的情况下,常常会非常严重.虽然采用减少不必要的重画动作的方法可以有效地消除闪烁现象,但它并不能完全避免闪烁现象.而且真正的动画大都是放映连续的页面,此时根本不能消除背景.要想真正地解决闪烁问题,生成平滑动画,只能采用双缓冲技术.所谓双缓冲技术,就是先把需要在屏幕上显示的图象做成后台图像,然后再通过当前作图环境在屏幕上输出做好的后台图像.这种技术的原理是:程序把帧缓存看成是两个视频缓存,在任意时刻,只有两者中的一个内容被显示出来,当前可见视频缓存成为前台视频缓存,不可见的正在画的视频缓存成为后台视频缓存.当后台视频缓存中的内容被要求显示时,视频交换机就会将它拷贝至前台视频缓存.显示硬件则不断地读可见视频缓存中的内容,并把结果显示在屏幕上.双缓存技术可以生成平滑的动画,最好把一幅完全画好的图像显示一定的时间,然后提供下一幅画面,该画面也是完全画好的,并且显示同样长的时间.视频图像按此方式交替出现,从一幅图像变化到下一幅图像,由于时间极短,人眼是感觉不到这种变化的.采用双缓冲技术实现动画的过程如流程图2所示.使用双缓冲时,必须定义两个对象,一个用来加载并显示影像,另一个则是空白的影像对象作为缓冲,并利用方法建立对象.此外还需要一个类的对象,用来将下一个要显示的画面绘制到缓冲区中,但是并不是真正地显示到屏幕上.当画面成功地绘制到缓冲区之后,再利用方法将当前缓冲区的对象绘制到区域中,并且迅速地覆盖前一个画面,有效地减少闪烁的情况.也就是说把原来影像清除,显示影像的复杂工作由看不见的对象来进行,而在上则只是单纯地将画面慢慢循序地覆盖过去而已.现在我们把拉动布幕例题加上双缓冲技术,就改善了原本相当严重的闪烁情形.如流程图3所示.它的具体实现步骤如下:(1)创建一张空白图像作为后台图像:=(().,().);=.();其中(,)方法是类继承自它祖先类(2)把原来()方法中执行的绘图动作都先转移到备用屏幕上:.(,,,);(3)在()方法内程序代码的最后,把后台图像一次显示在屏幕上:.(,,,);(4)改写()方法为:();利用Java语言的双缓冲技术实现计算机动画@申海$沈阳师范学院物理系!辽宁沈阳110034计算机动画;;闪烁;;双缓冲技术介绍了Java动

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值