站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Java 专题java动画——二维连续图像播放

java动画——二维连续图像播放

摘要: java动画——二维连续图像播放
java动画——二维连续图像播放



// 程序:二维连续图像播放

// 范例文件:SerialImage2.java



import java.awt.*;

import java.applet.*;



public class SerialImage2 extends Applet implements Runnable

{

int SPF; //动画播放的SPF

int sx, sy; //图像来源区域

Image Animation; //动画图像

MediaTracker MT; //图像追踪器



Thread newThread; //新线程



Image OffScreen; //次画面

Graphics drawOffScreen; //绘制次画面的Graphics实体



//===============init()函数和第一版本相同===========================

public void init()

{

SPF = 100;

MT = new MediaTracker(this);



Animation

= getImage(getDocumentBase(),"Images/Cg0430.jpg");



MT.addImage(Animation,0);



try

{

showStatus("图像加载中..."); //在状态列显示信息

MT.waitForAll(); //等待所有图像下载

}

catch(InterruptedException E){ }



OffScreen = createImage(250,250); //建立次画面

drawOffScreen = OffScreen.getGraphics(); //取得次画面的绘制类

}

//==================================================================



public void start() //start()函数

{

//建立与启动新线程

newThread = new Thread(this);

newThread.start();

}



public void stop() //stop()函数

{

newThread = null; //将线程设为null

}



//==================================================================



public void paint(Graphics g) //已将差劲的动画循环抽离

{

//下面这两行的作用为清除次画面

drawOffScreen.setColor(Color.black);

drawOffScreen.fillRect(0,0,250,250);



//下面这行的作用是在次画面上绘制目前图像

drawOffScreen.drawImage(Animation,80,30,208,126,sx,sy,sx+128,sy+96,this);



//将次画面贴到主画面上

g.drawImage(OffScreen,0,0,250,250,this);

}



public void update(Graphics g)

{

paint(g);

}



//===============新的动画循环在此===================================

public void run()

{

while(newThread != null)

{

repaint(); //重新绘制图像



try

{

Thread.sleep(SPF); //使用指定的SPF

//计算来源区域

sx += 128;

if(sx == 640)

{

sy += 96;

sx=0;

if (sy == 480)

sy=0;

}

}

catch(InterruptedException E){ }

}

}

}



当然我们也可以将图片分布在行列结构中,形成2维图像。计算当然也就麻烦些。







↑返回目录
前一篇: java动画——连续图像绘制
后一篇: java动画——使用过高的FPS