当前位置:编程学习 > JAVA >>

java applet写的全屏模式为什么会闪屏,内附代码

--------------------编程问答-------------------- 各位大神求赐教啊!!! --------------------编程问答-------------------- 你的代码看到"extends Applet"就知道原因了:

Applet是属于awt框架的一个类,用它来实现动画的原理,是将面板上的内容擦除,然后再重绘新内容到面板上,如此反复形成动画。

但注意擦除面板内容后,面板出现了一次空白,一秒内多次擦除会出现多次空白,这就是闪烁出现的原因。

解决办法:使用"extends JApplet"即可。因为JApplet类是属于swing框架的一个类,所有的swing组件都默认实现了“双缓冲”以消除闪烁,其原理是,当需要显示新图像的时候,不再是擦除原图像,而是将内存中已经绘制好的下一幅图像贴在原图像上覆盖。内存中下一幅图像的绘制动作和面板上显示图像的动作分别由两个线程完成。 --------------------编程问答-------------------- “闪屏”一般的原因都是因为重新绘制图像造成的 --------------------编程问答--------------------
引用 2 楼 vincent_3951 的回复:
你的代码看到"extends Applet"就知道原因了:

Applet是属于awt框架的一个类,用它来实现动画的原理,是将面板上的内容擦除,然后再重绘新内容到面板上,如此反复形成动画。

但注意擦除面板内容后,面板出现了一次空白,一秒内多次擦除会出现多次空白,这就是闪烁出现的原因。

解决办法:使用"extends JApplet"即可。因为JApplet类是属于swing框架的一……

大大~~我试过改JApplet了,全屏之后效果还是一样,图片显示不出来。还有上面那个程序是另建一个Frame之后再在Frame里面绘制窗口或者全屏的。Frame,我看那个书上说用这个 frame.createBufferStrategy(3);就可以实现三缓冲,还有用BufferStrategy bufferStrategy = frame.getBufferStrategy();
,可以实现自动调用链交换或者页面交换来实现缓冲。按理来说应该是实现缓冲了~~

大大能到机上跑一下44 --------------------编程问答--------------------
引用 3 楼 lxwankkk 的回复:
“闪屏”一般的原因都是因为重新绘制图像造成的

上面的代码应该已经实现缓冲了啊~~请问是代码哪里有问题?
补充:Java ,  Java相关
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,