00000002.htm
来自「水木清华BBS」· HTM 代码 · 共 82 行
HTM
82 行
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: jtiger (jim), 信区: Java <BR>标 题: 在JAVA applet中的动画(三) <BR>日 期: Tue Mar 12 17:03:29 1996 <BR> <BR> <BR> 双缓冲技术: <BR> 另一种减小帧之间的闪烁的方法是使用双缓冲,它在许多动画applet <BR> 中被使用。 <BR> 主要原理是创建一个后台图象,将一帧画入图象,然后调用drawImage() <BR> 将整个图象一次画到屏幕上去。好处是大部分绘制是离屏的。将离屏图象一次 <BR> 绘至屏幕上比直接在屏幕上绘制要有效得多。 <BR> 双缓冲可以使动画平滑,但有一个缺点,要分配一张后台图象,如果图象 <BR> 相当大,这将需要很大一块内存。 <BR> 当你使用双缓冲技术时,应重载update()。 <BR> <BR> Dimension offDimension; <BR> Image offImage; <BR> Graphics offGraphics; <BR> <BR> public void update(Graphics g) { <BR> Dimension d = size(); <BR> <BR> if ((offGraphics == null) <BR> || (d.width != offDimension.width) <BR> || (d.height != offDimension.height)) { <BR> offDimension = d; <BR> offImage = createImage(d.width, d.height); <BR> offGraphics = offImage.getGraphics(); <BR> } <BR> <BR> offGraphics.setColor(getBackground()); <BR> offGraphics.fillRect(0, 0, d.width, d.height); <BR> offGraphics.setColor(Color.Black); <BR> <BR> paintFrame(offGraphics); <BR> <BR> g.drawImage(offImage, 0, 0, null); <BR> } <BR> <BR> public void paint(Graphics g) { <BR> if (offImage != null) { <BR> g.drawImage(offImage, 0, 0, null); <BR> } <BR> } <BR> <BR> public void paintFrame(Graphics g) { <BR> Dimension d = size(); <BR> int h = d.height / 2; <BR> for (int x = 0; x < d.width; x++) { <BR> int y1 = (int)((1.0 + Math.sin((x - frame) * <BR>0.05)) + h); <BR> int y2 = (int)((1.0 + Math.sin((x + frame) * <BR>0.05)) + h); <BR> g.drawLine(x, y1, x, y2); <BR> } <BR> } <BR> <BR> <BR>--编译自<JAVA World> <BR>-- <BR>Nothing is right, <BR> nothing is wrong. <BR> <BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?