欢迎来到天天文库
浏览记录
ID:25232401
大小:213.50 KB
页数:18页
时间:2018-11-17
《java2 网络编程基础-6》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、1Java2网络编程基础Java中的动画62Java中的动画Paint()方法无论任何时候当Java需要画applet时,都会调用paint()方法开始画applet时移动到包含applet的窗口时从applet移动另一窗口时3Java中的动画(续)Sleep()方法sleep()方法,是Threadclass的一部分,用来使applet暂停如果没有sleep()方法,applet将一直不停的运行使用sleep()可以使你能控制动画的速度4对applet的修改使用来threads修改applet你需要做四个修改:修改你的applet类的修
2、饰来加入对Runnable接口的实现申明一个实例变量来放这个applet线程修改你的start()方法来创建一个线程并运行它创建一个run()方法来包含applet实际运行时的代码5图象的闪烁图象的闪烁是由于Javaappletpaints和repaints每个帧的结果。我们看到repaint()方法调用了paint()。6图象的闪烁(续)在响应repaint()时确实需要调用paint(),实际的执行按以下的步骤发生:对repaint()方法的调用引起对update()方法的调用。update()方法进行清屏,并用当前背景颜色填充,然后
3、调用paint()方法。paint()方法画当前帧的内容。7引起闪烁的原因对update()方法的调用是引起闪烁的原因因为在帧之间清屏,屏幕未改变的部分在被画与被清除之间迅速交替。因此,就出现了闪烁现象8避免闪烁有两种方式来避免Javaapplet中的闪烁:覆盖update()要么根本就不清屏,要么只清除屏幕的改变部分。既覆盖update(),也覆盖paint(),且使用双缓冲。9避免闪烁(续)双缓冲借助双缓冲,或多或少可减少闪烁。在这种方法里,创建另一个表面(可以说是屏外的),对该屏外的表面做所有的画操作。然后最终一次性将整个表面画到实
4、际的applet中(和屏幕上)--而不是画到applet的实际图形表面。10避免闪烁(续)由于所有的工作实际上是在后台进行,因此没有机会中断绘制过程,也就不会出现意外和发生破坏动画顺畅性的情况。双缓冲并不是非常有效率,因为它会占用更多内存和空间,所以,如能避免,应尽量不要采用这一方法。但是,就几乎能消除动画闪烁而言,双缓冲非常有效。11使用图象的动画要在applet中显示图像,首先必须将该图像装入到Java程序中。图像存储为与Java类文件分开的独立文件,所以必须告知Java在哪儿寻找这些图像。applet类提供了称为getImage的方
5、法,它装入图像并自动为您创建Image类的一个实例。要使用它,您需要做的就是导入java.awt.Image类,然后向getImage提供要装入图像的URL。12获得图象进行后一步有两种途径:getImage()方法带一个参数(所输URL的一个对象)检索该URL处的图像。getImage()方法带两个参数:基本URL和表示实际图像(相对于该基本URL)的路径或文件名的字符串。13获得图象(续)applet类还提供了两种方法,getImage在基本URL参数方面将经常用到这两种方法:getDocumentBase()方法返回一个URL对象,
6、它表示含有此applet的HTML文件的目录。getCodeBase()方法返回一个字符串,表示此applet包含于其中的目录。14使用图象创建动画使用图像创制动画与通过使用字体、颜色或形状创建图像极为相似。您使用与您以前用到的画、重画和减少闪烁相同的方法和相同的过程。唯一的区别就是,您使用一个图像的堆栈浏览,而不是一系列画的方法。15创建双缓冲的applet要执行双缓冲,您需要两样东西:要利用的图像该图像的图形上下文两者一起摸拟applet绘图表面的效果图形上下文(Graphics的一个实例)提供绘图方法,如drawImage和draw
7、String,Image保留绘制的点16创建双缓冲的applet(续)双缓冲添加到applet有四个主要步骤:首先,需要将屏外的图像和图形上下文存储在实例变量中,以便于将它们传递给paint()方法。在类定义中声明下列实例变量ImageoffscreenImage;GraphicsoffscreenGraphics;17创建双缓冲的applet(续)第二,在初始化applet的过程中,您将创建一个Image对象和一个Graphics对象并将这些变量赋给它们。createImage方法将为您提供Image的一个实例,然后,为了为这一图像获取
8、一个新的图形上下文,您可采用getGraphics()方法:offscreenImage=createImage(this.size().width,this.size().height);o
此文档下载收益归作者所有