📄 animation.java
字号:
////////////////////////////////////////////////////////////////////////////////
//
// Animation.java
//
// 开发者:刘嘉祥
//
////////////////////////////////////////////////////////////////////////////////
//
// 功能:
// 实现动画的播放。
//
////////////////////////////////////////////////////////////////////////////////
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Rectangle;
import javax.swing.JApplet;
import javax.swing.Timer;
import javax.swing.ImageIcon;
import java.awt.image.BufferedImage;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.applet.AudioClip;
import javax.imageio.ImageIO;
import java.net.URL;
public class Animation extends JApplet implements ActionListener
{
private int a_frame = 0; //当前帧号
Timer a_timer; //计时器
boolean a_ready = true; //缓存帧准备状态,true为准备好
BufferedImage a_image =
new BufferedImage(600,400,BufferedImage.TYPE_INT_RGB);//帧缓存
static Image gunImage;
static AudioClip gunSound,beginSound,crashSound,legSound,wangSound,haSound,
appearSound,knockSound,circleSound,heiSound,rotateSound,
hanSound,heiJumpSound,stickHitSound,hitSound,fadeInSound,
oneYearSound,docSound,dingdongSound,axeSound,groundSound,
surpriseSound,runSound,baJianSound,haJumpSound,piJianSound,
ciJianSound,biSound,typeSound,guangHuanSound,angelSound,
gunRotateSound,moveSound,kickSound,punchSound,firstYearSound,
secondYearSound,thirdYearSound,forthYearSound,endSound;
public void init()
{
int delay = 50;
try
{
gunImage = getImage(getCodeBase(),"沙漠之虫.gif");
ImageIcon ic = new ImageIcon("沙漠之虫.gif");
gunImage = ic.getImage();
}
catch(Exception e)
{
System.err.println("No");
e.printStackTrace();
}
URL path = getDocumentBase();
gunSound = getAudioClip(path,"gun.wav");
beginSound = getAudioClip(path,"begin.wav");
crashSound = getAudioClip(path,"crash.wav");
legSound = getAudioClip(path,"leg.wav");
wangSound = getAudioClip(path,"wang.wav");
haSound = getAudioClip(path,"ha.wav");
appearSound = getAudioClip(path,"appear.wav");
knockSound = getAudioClip(path,"knock.wav");
firstYearSound = getAudioClip(path,"firstYear.wav");
circleSound = getAudioClip(path,"circle.wav");
heiSound = getAudioClip(path,"hei.wav");
rotateSound = getAudioClip(path,"rotate.wav");
hanSound = getAudioClip(path,"han.wav");
heiJumpSound = getAudioClip(path,"heiJump.wav");
stickHitSound = getAudioClip(path,"stickHit.wav");
hitSound = getAudioClip(path,"hit.wav");
fadeInSound = getAudioClip(path,"fadeIn.wav");
oneYearSound = getAudioClip(path,"oneYear.wav");
docSound = getAudioClip(path,"doc.wav");
secondYearSound = getAudioClip(path,"secondYear.wav");
dingdongSound = getAudioClip(path,"dingdong.wav");
axeSound = getAudioClip(path,"axe.wav");
groundSound = getAudioClip(path,"ground.wav");
surpriseSound = getAudioClip(path,"surprise.wav");
runSound = getAudioClip(path,"run.wav");
baJianSound = getAudioClip(path,"baJian.wav");
haJumpSound = getAudioClip(path,"haJump.wav");
piJianSound = getAudioClip(path,"piJian.wav");
ciJianSound = getAudioClip(path,"ciJian.wav");
thirdYearSound = getAudioClip(path,"thirdYear.wav");
biSound = getAudioClip(path,"bi.wav");
typeSound = getAudioClip(path,"type.wav");
guangHuanSound = getAudioClip(path,"guangHuan.wav");
angelSound = getAudioClip(path,"angel.wav");
gunRotateSound = getAudioClip(path,"gunRotate.wav");
forthYearSound = getAudioClip(path,"forthYear.wav");
moveSound = getAudioClip(path,"move.wav");
kickSound = getAudioClip(path,"kick.wav");
punchSound = getAudioClip(path,"punch.wav");
endSound = getAudioClip(path,"end.wav");
a_timer = new Timer(delay,this);
a_timer.setInitialDelay(0);
a_timer.setCoalesce(true);
a_timer.start();
}//方法init结束
public void actionPerformed(ActionEvent e)
{
a_frame++;
repaint();
}//方法actionPerformed结束
//帧缓存
public void bufferedDraw()
{
if(!a_ready) return;
//开始准备帧缓存
a_ready = false;
Graphics2D g2d = a_image.createGraphics();
//清除背景
g2d.setColor(Color.white);
g2d.fill(new Rectangle(0,0,600,400));
g2d.setColor(Color.black);
//动画绘制
if((a_frame>0)&&(a_frame<=480))
Opening.drawOpening(g2d,a_frame);
else if(a_frame<=540)
Appearance.drawAppearance(g2d,(a_frame-480));
else if(a_frame<=1040)
FirstYear.drawFirstYear(g2d,(a_frame-540));
else if(a_frame<=1140)
Subtitle.drawOneYear(g2d,(a_frame-1040));
else if(a_frame<=1200)
Appearance.drawAppearance(g2d,(a_frame-1140));
else if(a_frame<=1540)
SecondYear.drawSecondYear(g2d,(a_frame-1200));
else if(a_frame<=1640)
Subtitle.drawOneYear(g2d,(a_frame-1540));
else if(a_frame<=1700)
Appearance.drawAppearance(g2d,(a_frame-1640));
else if(a_frame<=2660)
ThirdYear.drawThirdYear(g2d,(a_frame-1700));
else if(a_frame<=2760)
Subtitle.drawOneYear(g2d,(a_frame-2660));
else if(a_frame<=2820)
Appearance.drawAppearance(g2d,(a_frame-2760));
else if(a_frame<=3260)
ForthYear.drawForthYear(g2d,(a_frame-2820));
else if(a_frame<=3360)
Subtitle.drawPower(g2d,(a_frame-3260));
else
Ending.drawEnding(g2d,(a_frame-3360));
a_ready = true; //帧缓存已准备好
}//方法bufferedDraw结束
public void paint(Graphics g)
{
if(a_ready) g.drawImage(a_image,0,0,600,400,this);
bufferedDraw();
}//方法paint结束
}//类Animation结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -