Java游戏图像处理入门[0]——全屏显示及动画处理

源码下载:http://download.csdn.net/source/405250

Java的图像处理能力相对较弱是一个不争的事实,因为jre需要兼顾不同系统间的相同功能实现,所以并非所有图形操作都可以利用java进行。但对于绝大多数的图形开发而言,java已经足够强大了,尤其是对2d图形游戏而言,其简单快捷的编码风格在某些时候完全可以应用到实际的游戏开发中去。

在以前的blog文章中,我曾经历居过一些简单的实例,此系列中我会进行比以前更深入的用例讲解。

以前的文章中,我总是喜欢以窗体模式的frame显示数据,这样做有例有弊。好处在于不会消耗额外的系统资源,而坏处在于若不进行相关代码调整则窗体内图像大小总是固定的,无论显示器实际分辨率如何窗体中图形总是会以默认大小显示,而且在窗体环绕中的游戏临场感也不够强。

实际上Java中的frame是可以转化为全屏方式显示的,只是我们善于利用GraphicsEnvironment类,就可以对系统显示环境作相应的调整操作。

ScreenManager.java
Java游戏图像处理入门[0]——全屏显示及动画处理packageorg.loon.game.test;
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.awt.Color;
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.awt.DisplayMode;
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.awt.EventQueue;
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.awt.Frame;
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.awt.Graphics2D;
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.awt.GraphicsConfiguration;
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.awt.GraphicsDevice;
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.awt.GraphicsEnvironment;
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.awt.Toolkit;
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.awt.Window;
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.awt.event.WindowAdapter;
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.awt.event.WindowEvent;
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.awt.image.BufferStrategy;
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.awt.image.BufferedImage;
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.lang.reflect.InvocationTargetException;
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
/***//**
Java游戏图像处理入门[0]——全屏显示及动画处理*
Java游戏图像处理入门[0]——全屏显示及动画处理*<p>Title:LoonFramework</p>
Java游戏图像处理入门[0]——全屏显示及动画处理*<p>Description:用于进行屏幕管理</p>
Java游戏图像处理入门[0]——全屏显示及动画处理*<p>Copyright:Copyright(c)2008</p>
Java游戏图像处理入门[0]——全屏显示及动画处理*<p>Company:LoonFramework</p>
Java游戏图像处理入门[0]——全屏显示及动画处理*<p>License:
http://www.apache.org/licenses/LICENSE-2.0</p>
Java游戏图像处理入门[0]——全屏显示及动画处理*
@authorchenpeng
Java游戏图像处理入门[0]——全屏显示及动画处理*@email:[email protected]
Java游戏图像处理入门[0]——全屏显示及动画处理*
@version0.1
Java游戏图像处理入门[0]——全屏显示及动画处理
*/

Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicclassScreenManager...{
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
privateGraphicsDevicedevice;
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicScreenManager()...{
Java游戏图像处理入门[0]——全屏显示及动画处理GraphicsEnvironmentenvironment
=GraphicsEnvironment
Java游戏图像处理入门[0]——全屏显示及动画处理.getLocalGraphicsEnvironment();
Java游戏图像处理入门[0]——全屏显示及动画处理device
=environment.getDefaultScreenDevice();
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
/***//**
Java游戏图像处理入门[0]——全屏显示及动画处理*返回系统支持的显示模式数组
Java游戏图像处理入门[0]——全屏显示及动画处理*
Java游戏图像处理入门[0]——全屏显示及动画处理*
@return
Java游戏图像处理入门[0]——全屏显示及动画处理
*/

Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicDisplayMode[]getCompatibleDisplayModes()...{
Java游戏图像处理入门[0]——全屏显示及动画处理
returndevice.getDisplayModes();
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
/***//**
Java游戏图像处理入门[0]——全屏显示及动画处理*返回与指定数组兼容的显示模式清单
Java游戏图像处理入门[0]——全屏显示及动画处理*
Java游戏图像处理入门[0]——全屏显示及动画处理*
@parammodes
Java游戏图像处理入门[0]——全屏显示及动画处理*
@return
Java游戏图像处理入门[0]——全屏显示及动画处理
*/

Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicDisplayModefindFirstCompatibleMode(DisplayModemodes[])...{
Java游戏图像处理入门[0]——全屏显示及动画处理DisplayModegoodModes[]
=device.getDisplayModes();
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
for(inti=0;i<modes.length;i++)...{
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
for(intj=0;j<goodModes.length;j++)...{
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
if(displayModesMatch(modes[i],goodModes[j]))...{
Java游戏图像处理入门[0]——全屏显示及动画处理
returnmodes[i];
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
returnnull;
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
/***//**
Java游戏图像处理入门[0]——全屏显示及动画处理*返回目前采用的显示模式
Java游戏图像处理入门[0]——全屏显示及动画处理*
Java游戏图像处理入门[0]——全屏显示及动画处理*
@return
Java游戏图像处理入门[0]——全屏显示及动画处理
*/

Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicDisplayModegetCurrentDisplayMode()...{
Java游戏图像处理入门[0]——全屏显示及动画处理
returndevice.getDisplayMode();
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
/***//**
Java游戏图像处理入门[0]——全屏显示及动画处理*匹配两个指定的显示模式
Java游戏图像处理入门[0]——全屏显示及动画处理*
Java游戏图像处理入门[0]——全屏显示及动画处理*
@parammode1
Java游戏图像处理入门[0]——全屏显示及动画处理*
@parammode2
Java游戏图像处理入门[0]——全屏显示及动画处理*
@return
Java游戏图像处理入门[0]——全屏显示及动画处理
*/

Java游戏图像处理入门[0]——全屏显示及动画处理
publicbooleandisplayModesMatch(DisplayModemode1,DisplayModemode2)
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
...{
Java游戏图像处理入门[0]——全屏显示及动画处理
if(mode1.getWidth()!=mode2.getWidth()
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
||mode1.getHeight()!=mode2.getHeight())...{
Java游戏图像处理入门[0]——全屏显示及动画处理
returnfalse;
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
if(mode1.getBitDepth()!=DisplayMode.BIT_DEPTH_MULTI
Java游戏图像处理入门[0]——全屏显示及动画处理
&&mode2.getBitDepth()!=DisplayMode.BIT_DEPTH_MULTI
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
&&mode1.getBitDepth()!=mode2.getBitDepth())...{
Java游戏图像处理入门[0]——全屏显示及动画处理
returnfalse;
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
if(mode1.getRefreshRate()!=DisplayMode.REFRESH_RATE_UNKNOWN
Java游戏图像处理入门[0]——全屏显示及动画处理
&&mode2.getRefreshRate()!=DisplayMode.REFRESH_RATE_UNKNOWN
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
&&mode1.getRefreshRate()!=mode2.getRefreshRate())...{
Java游戏图像处理入门[0]——全屏显示及动画处理
returnfalse;
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
returntrue;
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
/***//**
Java游戏图像处理入门[0]——全屏显示及动画处理*设置一个默认窗体的全屏模式
Java游戏图像处理入门[0]——全屏显示及动画处理*
Java游戏图像处理入门[0]——全屏显示及动画处理*
@paramdisplayMode
Java游戏图像处理入门[0]——全屏显示及动画处理
*/

Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicvoidsetFullScreen(DisplayModedisplayMode)...{
Java游戏图像处理入门[0]——全屏显示及动画处理
finalFrameframe=newFrame();
Java游戏图像处理入门[0]——全屏显示及动画处理frame.setBackground(Color.BLACK);
Java游戏图像处理入门[0]——全屏显示及动画处理setFullScreen(displayMode,frame);
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
/***//**
Java游戏图像处理入门[0]——全屏显示及动画处理*设定指定窗体的全屏模式
Java游戏图像处理入门[0]——全屏显示及动画处理*
Java游戏图像处理入门[0]——全屏显示及动画处理*
@paramdisplayMode
Java游戏图像处理入门[0]——全屏显示及动画处理*
@paramwindow
Java游戏图像处理入门[0]——全屏显示及动画处理
*/

Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicvoidsetFullScreen(DisplayModedisplayMode,finalFramewindow)...{
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理window.addWindowListener(
newWindowAdapter()...{
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicvoidwindowClosing(WindowEvente)...{
Java游戏图像处理入门[0]——全屏显示及动画处理System.exit(
0);
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理}
);
Java游戏图像处理入门[0]——全屏显示及动画处理window.setUndecorated(
true);
Java游戏图像处理入门[0]——全屏显示及动画处理window.setResizable(
false);
Java游戏图像处理入门[0]——全屏显示及动画处理window.setIgnoreRepaint(
false);
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理device.setFullScreenWindow(window);
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
if(displayMode!=null&&device.isDisplayChangeSupported())...{
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
try...{
Java游戏图像处理入门[0]——全屏显示及动画处理device.setDisplayMode(displayMode);
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理}
catch(IllegalArgumentExceptionex)...{
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理window.setSize(displayMode.getWidth(),displayMode.getHeight());
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
try...{
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理EventQueue.invokeAndWait(
newRunnable()...{
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicvoidrun()...{
Java游戏图像处理入门[0]——全屏显示及动画处理window.createBufferStrategy(
2);
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理}
);
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理}
catch(InterruptedExceptionex)...{
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理}
catch(InvocationTargetExceptionex)...{
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
/***//**
Java游戏图像处理入门[0]——全屏显示及动画处理*取得当前的Graphics2D模式背景
Java游戏图像处理入门[0]——全屏显示及动画处理*
Java游戏图像处理入门[0]——全屏显示及动画处理*
@return
Java游戏图像处理入门[0]——全屏显示及动画处理
*/

Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicGraphics2DgetGraphics()...{
Java游戏图像处理入门[0]——全屏显示及动画处理Windowwindow
=device.getFullScreenWindow();
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
if(window!=null)...{
Java游戏图像处理入门[0]——全屏显示及动画处理BufferStrategystrategy
=window.getBufferStrategy();
Java游戏图像处理入门[0]——全屏显示及动画处理
return(Graphics2D)strategy.getDrawGraphics();
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理}
else...{
Java游戏图像处理入门[0]——全屏显示及动画处理
returnnull;
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
/***//**
Java游戏图像处理入门[0]——全屏显示及动画处理*刷新显示的数据
Java游戏图像处理入门[0]——全屏显示及动画处理*
Java游戏图像处理入门[0]——全屏显示及动画处理
*/

Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicvoidupdate()...{
Java游戏图像处理入门[0]——全屏显示及动画处理Windowwindow
=device.getFullScreenWindow();
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
if(window!=null)...{
Java游戏图像处理入门[0]——全屏显示及动画处理BufferStrategystrategy
=window.getBufferStrategy();
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
if(!strategy.contentsLost())...{
Java游戏图像处理入门[0]——全屏显示及动画处理strategy.show();
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
//同步
Java游戏图像处理入门[0]——全屏显示及动画处理
Toolkit.getDefaultToolkit().sync();
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
/***//**
Java游戏图像处理入门[0]——全屏显示及动画处理*返回当前窗口
Java游戏图像处理入门[0]——全屏显示及动画处理*
Java游戏图像处理入门[0]——全屏显示及动画处理*
@return
Java游戏图像处理入门[0]——全屏显示及动画处理
*/

Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicFramegetFullScreenWindow()...{
Java游戏图像处理入门[0]——全屏显示及动画处理
return(Frame)device.getFullScreenWindow();
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicintgetWidth()...{
Java游戏图像处理入门[0]——全屏显示及动画处理Windowwindow
=device.getFullScreenWindow();
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
if(window!=null)...{
Java游戏图像处理入门[0]——全屏显示及动画处理
returnwindow.getWidth();
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理}
else...{
Java游戏图像处理入门[0]——全屏显示及动画处理
return0;
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicintgetHeight()...{
Java游戏图像处理入门[0]——全屏显示及动画处理Windowwindow
=device.getFullScreenWindow();
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
if(window!=null)...{
Java游戏图像处理入门[0]——全屏显示及动画处理
returnwindow.getHeight();
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理}
else...{
Java游戏图像处理入门[0]——全屏显示及动画处理
return0;
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
/***//**
Java游戏图像处理入门[0]——全屏显示及动画处理*恢复屏幕的显示模式
Java游戏图像处理入门[0]——全屏显示及动画处理*
Java游戏图像处理入门[0]——全屏显示及动画处理
*/

Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicvoidrestoreScreen()...{
Java游戏图像处理入门[0]——全屏显示及动画处理Windowwindow
=device.getFullScreenWindow();
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
if(window!=null)...{
Java游戏图像处理入门[0]——全屏显示及动画处理window.dispose();
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理device.setFullScreenWindow(
null);
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
/***//**
Java游戏图像处理入门[0]——全屏显示及动画处理*创建一个与现有显示模式兼容的bufferedimage
Java游戏图像处理入门[0]——全屏显示及动画处理*
Java游戏图像处理入门[0]——全屏显示及动画处理*
@paramw
Java游戏图像处理入门[0]——全屏显示及动画处理*
@paramh
Java游戏图像处理入门[0]——全屏显示及动画处理*
@paramtransparancy
Java游戏图像处理入门[0]——全屏显示及动画处理*
@return
Java游戏图像处理入门[0]——全屏显示及动画处理
*/

Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicBufferedImagecreateCompatibleImage(intw,inth,inttransparancy)...{
Java游戏图像处理入门[0]——全屏显示及动画处理Windowwindow
=device.getFullScreenWindow();
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
if(window!=null)...{
Java游戏图像处理入门[0]——全屏显示及动画处理GraphicsConfigurationgc
=window.getGraphicsConfiguration();
Java游戏图像处理入门[0]——全屏显示及动画处理
returngc.createCompatibleImage(w,h,transparancy);
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
returnnull;
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理

上面我所给出的,是一个Screen的管理类,他集合了对窗体Graphics的操作处理,用例如下。

ScreenTest .java
Java游戏图像处理入门[0]——全屏显示及动画处理packageorg.loon.game.test;
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.awt.Color;
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.awt.DisplayMode;
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.awt.Font;
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.awt.Frame;
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.awt.Graphics;
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicclassScreenTestextendsFrame...{
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
/***//**
Java游戏图像处理入门[0]——全屏显示及动画处理*
Java游戏图像处理入门[0]——全屏显示及动画处理
*/

Java游戏图像处理入门[0]——全屏显示及动画处理
privatestaticfinallongserialVersionUID=1L;
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
privatestaticfinallongTIME=9000;
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicstaticvoidmain(String[]args)...{
Java游戏图像处理入门[0]——全屏显示及动画处理
//创建一个显示模式及设定参数,分别为:宽、高、比特位数、刷新率(赫兹)
Java游戏图像处理入门[0]——全屏显示及动画处理
DisplayModedisplayMode=newDisplayMode(800,600,16,
Java游戏图像处理入门[0]——全屏显示及动画处理DisplayMode.REFRESH_RATE_UNKNOWN);
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理ScreenTesttest
=newScreenTest();
Java游戏图像处理入门[0]——全屏显示及动画处理test.run(displayMode);
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicvoidrun(DisplayModedisplayMode)...{
Java游戏图像处理入门[0]——全屏显示及动画处理setBackground(Color.black);
Java游戏图像处理入门[0]——全屏显示及动画处理setForeground(Color.white);
Java游戏图像处理入门[0]——全屏显示及动画处理setFont(
newFont("Dialog",0,24));
Java游戏图像处理入门[0]——全屏显示及动画处理ScreenManagerscreen
=newScreenManager();
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
try...{
Java游戏图像处理入门[0]——全屏显示及动画处理screen.setFullScreen(displayMode,
this);
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
try...{
Java游戏图像处理入门[0]——全屏显示及动画处理Thread.sleep(TIME);
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理}
catch(InterruptedExceptionex)...{
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理}
finally...{
Java游戏图像处理入门[0]——全屏显示及动画处理screen.restoreScreen();
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicvoidpaint(Graphicsg)...{
Java游戏图像处理入门[0]——全屏显示及动画处理g.drawString(
"HelloWorld!",50,50);
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理

效果图如下:
Java游戏图像处理入门[0]——全屏显示及动画处理

我们可以看到,此时一个全屏显示的Hello World被创建出来。以此为基础,我们更可以轻松的创建全屏状态下的动画效果。

Animation.java
Java游戏图像处理入门[0]——全屏显示及动画处理packageorg.loon.game.test;
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.awt.Image;
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.util.ArrayList;
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicclassAnimation...{
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
//缓存动画面板
Java游戏图像处理入门[0]——全屏显示及动画处理
privateArrayList_frames;
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
privateint_frameIndex;
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
privatelong_time;
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
privatelong_total;
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
privateclassAnimationFrame...{
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Imageimage;
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
longendTime;
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicAnimationFrame(Imageimage,longendTime)...{
Java游戏图像处理入门[0]——全屏显示及动画处理
this.image=image;
Java游戏图像处理入门[0]——全屏显示及动画处理
this.endTime=endTime;
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicAnimation()...{
Java游戏图像处理入门[0]——全屏显示及动画处理_frames
=newArrayList();
Java游戏图像处理入门[0]——全屏显示及动画处理_total
=0;
Java游戏图像处理入门[0]——全屏显示及动画处理start();
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
/***//**
Java游戏图像处理入门[0]——全屏显示及动画处理*增加一个指定的动画图片并设置动画时间
Java游戏图像处理入门[0]——全屏显示及动画处理*
Java游戏图像处理入门[0]——全屏显示及动画处理*
@paramimage
Java游戏图像处理入门[0]——全屏显示及动画处理*
@paramduration
Java游戏图像处理入门[0]——全屏显示及动画处理
*/

Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicsynchronizedvoidaddFrame(Imageimage,longduration)...{
Java游戏图像处理入门[0]——全屏显示及动画处理_total
+=duration;
Java游戏图像处理入门[0]——全屏显示及动画处理_frames.add(
newAnimationFrame(image,_total));
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
/***//**
Java游戏图像处理入门[0]——全屏显示及动画处理*以默认播放时间载入图像数组
Java游戏图像处理入门[0]——全屏显示及动画处理*
Java游戏图像处理入门[0]——全屏显示及动画处理*
@paramimage
Java游戏图像处理入门[0]——全屏显示及动画处理
*/

Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicvoidaddFrame(Image[]image)...{
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
for(inti=0;i<image.length;i++)...{
Java游戏图像处理入门[0]——全屏显示及动画处理addFrame(image[i],
500);
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
/***//**
Java游戏图像处理入门[0]——全屏显示及动画处理*开始执行动画
Java游戏图像处理入门[0]——全屏显示及动画处理*
Java游戏图像处理入门[0]——全屏显示及动画处理
*/

Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicsynchronizedvoidstart()...{
Java游戏图像处理入门[0]——全屏显示及动画处理_time
=0;
Java游戏图像处理入门[0]——全屏显示及动画处理_frameIndex
=0;
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
/***//**
Java游戏图像处理入门[0]——全屏显示及动画处理*更新此动画播放时间
Java游戏图像处理入门[0]——全屏显示及动画处理*
Java游戏图像处理入门[0]——全屏显示及动画处理*
@paramtime
Java游戏图像处理入门[0]——全屏显示及动画处理
*/

Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicsynchronizedvoidupdate(longtime)...{
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
if(_frames.size()>1)...{
Java游戏图像处理入门[0]——全屏显示及动画处理_time
+=time;
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
if(_time>=_total)...{
Java游戏图像处理入门[0]——全屏显示及动画处理_time
=_time%_total;
Java游戏图像处理入门[0]——全屏显示及动画处理_frameIndex
=0;
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
while(_time>getFrame(_frameIndex).endTime)...{
Java游戏图像处理入门[0]——全屏显示及动画处理_frameIndex
++;
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
/***//**
Java游戏图像处理入门[0]——全屏显示及动画处理*获得当前动画image
Java游戏图像处理入门[0]——全屏显示及动画处理*
Java游戏图像处理入门[0]——全屏显示及动画处理*
@return
Java游戏图像处理入门[0]——全屏显示及动画处理
*/

Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicsynchronizedImagegetImage()...{
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
if(_frames.size()==0)...{
Java游戏图像处理入门[0]——全屏显示及动画处理
returnnull;
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理}
else...{
Java游戏图像处理入门[0]——全屏显示及动画处理
returngetFrame(_frameIndex).image;
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
/***//**
Java游戏图像处理入门[0]——全屏显示及动画处理*返回指定frame
Java游戏图像处理入门[0]——全屏显示及动画处理*
Java游戏图像处理入门[0]——全屏显示及动画处理*
@parami
Java游戏图像处理入门[0]——全屏显示及动画处理*
@return
Java游戏图像处理入门[0]——全屏显示及动画处理
*/

Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
privateAnimationFramegetFrame(inti)...{
Java游戏图像处理入门[0]——全屏显示及动画处理
return(AnimationFrame)_frames.get(i);
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理

上面是一个动画面板,用于记录一组连续的画面。

AnimationSimple.java...
Java游戏图像处理入门[0]——全屏显示及动画处理packageorg.loon.game.test;
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.awt.DisplayMode;
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.awt.Graphics;
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.awt.Graphics2D;
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.awt.Image;
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.awt.Toolkit;
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.awt.image.BufferedImage;
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.awt.image.MemoryImageSource;
Java游戏图像处理入门[0]——全屏显示及动画处理
importjava.awt.image.PixelGrabber;
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
importjavax.swing.ImageIcon;
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
/***//**
Java游戏图像处理入门[0]——全屏显示及动画处理*
Java游戏图像处理入门[0]——全屏显示及动画处理*<p>
Java游戏图像处理入门[0]——全屏显示及动画处理*Title:LoonFramework
Java游戏图像处理入门[0]——全屏显示及动画处理*</p>
Java游戏图像处理入门[0]——全屏显示及动画处理*<p>
Java游戏图像处理入门[0]——全屏显示及动画处理*Description:动画演示
Java游戏图像处理入门[0]——全屏显示及动画处理*</p>
Java游戏图像处理入门[0]——全屏显示及动画处理*<p>
Java游戏图像处理入门[0]——全屏显示及动画处理*Copyright:Copyright(c)2008
Java游戏图像处理入门[0]——全屏显示及动画处理*</p>
Java游戏图像处理入门[0]——全屏显示及动画处理*<p>
Java游戏图像处理入门[0]——全屏显示及动画处理*Company:LoonFramework
Java游戏图像处理入门[0]——全屏显示及动画处理*</p>
Java游戏图像处理入门[0]——全屏显示及动画处理*<p>
Java游戏图像处理入门[0]——全屏显示及动画处理*License:
http://www.apache.org/licenses/LICENSE-2.0
Java游戏图像处理入门[0]——全屏显示及动画处理*</p>
Java游戏图像处理入门[0]——全屏显示及动画处理*
Java游戏图像处理入门[0]——全屏显示及动画处理*
@authorchenpeng
Java游戏图像处理入门[0]——全屏显示及动画处理*@email:[email protected]
Java游戏图像处理入门[0]——全屏显示及动画处理*
@version0.1
Java游戏图像处理入门[0]——全屏显示及动画处理
*/

Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicclassAnimationSimple...{
Java游戏图像处理入门[0]——全屏显示及动画处理
//动作时间
Java游戏图像处理入门[0]——全屏显示及动画处理
privatestaticfinallongTIME=20000;
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
finalstaticprivateintWIDTH=800;
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
finalstaticprivateintHEIGHT=600;
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
privateScreenManager_screen;
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
privateImage_bgImage;
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
privateAnimation_animation1;
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
privateAnimation_animation2;
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
privateImage_cacheImage;
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
privateGraphics_graphics;
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicstaticvoidmain(Stringargs[])...{
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
//创建一个显示模式及设定参数,分别为:宽、高、比特位数、刷新率(赫兹)PS:frame中图像会自动放大
Java游戏图像处理入门[0]——全屏显示及动画处理
DisplayModedisplayMode=newDisplayMode(WIDTH,HEIGHT,16,0);
Java游戏图像处理入门[0]——全屏显示及动画处理AnimationSimpletest
=newAnimationSimple();
Java游戏图像处理入门[0]——全屏显示及动画处理test.run(displayMode);
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
//System.out.println((0<<16)|(0<<8)|0);
Java游戏图像处理入门[0]——全屏显示及动画处理
}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicvoidloadImages()...{
Java游戏图像处理入门[0]——全屏显示及动画处理
//为保持图片同步加载,构建一个cache作为二级缓存
Java游戏图像处理入门[0]——全屏显示及动画处理
_cacheImage=newBufferedImage(WIDTH,HEIGHT,2);
Java游戏图像处理入门[0]——全屏显示及动画处理_graphics
=_cacheImage.getGraphics();
Java游戏图像处理入门[0]——全屏显示及动画处理
//加载图片
Java游戏图像处理入门[0]——全屏显示及动画处理
_bgImage=loadImage("test_images/bg01.png",false);
Java游戏图像处理入门[0]——全屏显示及动画处理Image[]players1
=newImage[9];
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
for(inti=0;i<9;i++)...{
Java游戏图像处理入门[0]——全屏显示及动画处理players1[i]
=loadImage("test_images/marisa_0"+i+".png",true);
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理Image[]players2
=newImage[7];
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
for(inti=1;i<8;i++)...{
Java游戏图像处理入门[0]——全屏显示及动画处理players2[i
-1]=loadImage("test_images/reimu2_0"+i+".png",
Java游戏图像处理入门[0]——全屏显示及动画处理
true);
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
//创建动画
Java游戏图像处理入门[0]——全屏显示及动画处理
_animation1=newAnimation();
Java游戏图像处理入门[0]——全屏显示及动画处理_animation1.addFrame(players1);
Java游戏图像处理入门[0]——全屏显示及动画处理_animation2
=newAnimation();
Java游戏图像处理入门[0]——全屏显示及动画处理_animation2.addFrame(players2);
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
/***//**
Java游戏图像处理入门[0]——全屏显示及动画处理*加载图象
Java游戏图像处理入门[0]——全屏显示及动画处理*
Java游戏图像处理入门[0]——全屏显示及动画处理*
@paramfileName
Java游戏图像处理入门[0]——全屏显示及动画处理*
@paramisfiltration
Java游戏图像处理入门[0]——全屏显示及动画处理*
@return
Java游戏图像处理入门[0]——全屏显示及动画处理
*/

Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
privateImageloadImage(StringfileName,booleanisfiltration)...{
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
//当ImageIcon使用jar包本身资源时,需要通过jvm获得路径
Java游戏图像处理入门[0]——全屏显示及动画处理
ClassLoaderclassloader=getClass().getClassLoader();
Java游戏图像处理入门[0]——全屏显示及动画处理Imageimg
=newImageIcon(classloader.getResource(fileName)).getImage();
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
//为了演示例子没有使用偶的loonframework-game包(那天整合下准备发alpha了),而是直接处理了图像
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
if(isfiltration)...{
Java游戏图像处理入门[0]——全屏显示及动画处理
intwidth=img.getWidth(null);
Java游戏图像处理入门[0]——全屏显示及动画处理
intheight=img.getHeight(null);
Java游戏图像处理入门[0]——全屏显示及动画处理
//创建一个PixelGrabber
Java游戏图像处理入门[0]——全屏显示及动画处理
PixelGrabberpg=newPixelGrabber(img,0,0,width,height,true);
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
try...{
Java游戏图像处理入门[0]——全屏显示及动画处理pg.grabPixels();
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理}
catch(InterruptedExceptione)...{
Java游戏图像处理入门[0]——全屏显示及动画处理e.printStackTrace();
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
//获取其中像素
Java游戏图像处理入门[0]——全屏显示及动画处理
intpixels[]=(int[])pg.getPixels();
Java游戏图像处理入门[0]——全屏显示及动画处理
//遍历过滤像素
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
for(inti=0;i<pixels.length;i++)...{
Java游戏图像处理入门[0]——全屏显示及动画处理
//-16777216为0,0,0即纯黑
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
if(pixels[i]==-16777216)...{
Java游戏图像处理入门[0]——全屏显示及动画处理
//转为透明色
Java游戏图像处理入门[0]——全屏显示及动画处理
//16777215也就是255,255,255即纯白处理为(255<<16)|(255<<8)|
Java游戏图像处理入门[0]——全屏显示及动画处理
//255后可得此结果
Java游戏图像处理入门[0]——全屏显示及动画处理
pixels[i]=16777215;
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
//在内存中生成图像后映射到image
Java游戏图像处理入门[0]——全屏显示及动画处理
img=Toolkit.getDefaultToolkit().createImage(
Java游戏图像处理入门[0]——全屏显示及动画处理
newMemoryImageSource(width,height,pixels,0,width));
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
returnimg;
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicvoidrun(DisplayModedisplayMode)...{
Java游戏图像处理入门[0]——全屏显示及动画处理_screen
=newScreenManager();
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
try...{
Java游戏图像处理入门[0]——全屏显示及动画处理_screen.setFullScreen(displayMode);
Java游戏图像处理入门[0]——全屏显示及动画处理
//初始化图像加载
Java游戏图像处理入门[0]——全屏显示及动画处理
loadImages();
Java游戏图像处理入门[0]——全屏显示及动画处理
//动画循环播放
Java游戏图像处理入门[0]——全屏显示及动画处理
animationLoop();
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理}
finally...{
Java游戏图像处理入门[0]——全屏显示及动画处理_screen.restoreScreen();
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicvoidanimationLoop()...{
Java游戏图像处理入门[0]——全屏显示及动画处理
longstartTime=System.currentTimeMillis();
Java游戏图像处理入门[0]——全屏显示及动画处理
longcurrTime=startTime;
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
//每次比较工作时间,无效时将退出运作
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
while(currTime-startTime<TIME)...{
Java游戏图像处理入门[0]——全屏显示及动画处理
longelapsedTime=System.currentTimeMillis()-currTime;
Java游戏图像处理入门[0]——全屏显示及动画处理currTime
+=elapsedTime;
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
//改变动画1
Java游戏图像处理入门[0]——全屏显示及动画处理
_animation1.update(elapsedTime);
Java游戏图像处理入门[0]——全屏显示及动画处理
//改变动画2
Java游戏图像处理入门[0]——全屏显示及动画处理
_animation2.update(elapsedTime);
Java游戏图像处理入门[0]——全屏显示及动画处理
//绘制窗体
Java游戏图像处理入门[0]——全屏显示及动画处理
Graphics2Dg=_screen.getGraphics();
Java游戏图像处理入门[0]——全屏显示及动画处理draw(g);
Java游戏图像处理入门[0]——全屏显示及动画处理g.dispose();
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
//更新显示内容
Java游戏图像处理入门[0]——全屏显示及动画处理
_screen.update();
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
try...{
Java游戏图像处理入门[0]——全屏显示及动画处理Thread.sleep(
20);
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理}
catch(InterruptedExceptionex)...{
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理Java游戏图像处理入门[0]——全屏显示及动画处理
publicvoiddraw(Graphicsg)...{
Java游戏图像处理入门[0]——全屏显示及动画处理
//绘制背景0,0座标
Java游戏图像处理入门[0]——全屏显示及动画处理
_graphics.drawImage(_bgImage,0,0,null);
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
//绘制动画于0,0座标
Java游戏图像处理入门[0]——全屏显示及动画处理
_graphics.drawImage(_animation2.getImage(),0,0,null);
Java游戏图像处理入门[0]——全屏显示及动画处理
//绘制动画于400,0座标
Java游戏图像处理入门[0]——全屏显示及动画处理
_graphics.drawImage(_animation1.getImage(),400,0,null);
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理
//将缓存图绘制于窗体0,0座标之上
Java游戏图像处理入门[0]——全屏显示及动画处理
g.drawImage(_cacheImage,0,0,null);
Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理
Java游戏图像处理入门[0]——全屏显示及动画处理}

Java游戏图像处理入门[0]——全屏显示及动画处理

上面是一个动画演示用例,创建了一个背景及两个动画角色,效果图如下:

Java游戏图像处理入门[0]——全屏显示及动画处理

实际上无论多么复杂的画面效果,也是以这些最基础的环节拼凑而成的。

但是我们也都知道,举凡有利也就有弊,首先这种全屏显示方式无疑增加了系统资源损耗,而且由于分辨率改变造成的图像位置偏移也可能会影响到游戏效果,也增加了潜在错误的产生几率。比如国产的纯java网游《海天英雄传》中,虽然游戏初期只提供了全屏的游戏方式,但后来却突然增加窗口模式,我想或多或少也是与此有关的。

所以我个人建议在java游戏开发中应当订制全屏及视窗两种显示模式,由用户选择使用。当然,我并非专业的游戏开发人员,具体的抉择还是应当实际需要而来。