import
java.awt.*;
import
javax.swing.*;
public
class
apples{
public
static
void
main(String[] args){
apples
a = new
apples();
a.run();
}
private
Sprite sprite;
private
Animation ani;
private
ScreenManager s;
private
Image bg;
private
static
DisplayMode modes1[]
= {
new
DisplayMode(800, 600, 32, 0),
new
DisplayMode(800, 600, 24, 0),
new
DisplayMode(800, 600, 16, 0),
new
DisplayMode(640, 480, 32, 0),
new
DisplayMode(640, 480, 24, 0),
new
DisplayMode(640, 480, 16, 0),
};
//加載圖像和添加場景
public
void
loadImages(){
bg
= new
ImageIcon("C:\\baby.jpg").getImage();
Image
face1 = new
ImageIcon("C:\\baby1.png").getImage();
Image
face2 = new
ImageIcon("C:\\baby2.png").getImage();
ani
= new
Animation();
ani.addScene(face1,250);
ani.addScene(face2,250);
sprite
= new
Sprite(ani);
sprite.setVelocityX(0.3f);
sprite.setVelocityY(0.3f);
}
//主要的方法(main
method)
public
void
run(){
s
= new
ScreenManager();
try{
DisplayMode
dm = s.findFirstCompatibleMode(modes1);
s.setFullScreen(dm);
loadImages();
movieLoop();
}finally{
s.restoreScreen();
}
}
//播放電影
public
void
movieLoop(){
long
startingTime = System.currentTimeMillis();
long
cumTime = startingTime;
while(cumTime
- startingTime < 6000){
long
timePassed = System.currentTimeMillis()
-cumTime;
cumTime +=
timePassed;
update(timePassed);
//繪製和更新屏幕
Graphics2D g =
s.getGraphics();
draw(g);
g.dispose();
s.update();
try{
Thread.sleep(20);
}catch(Exception
ex){}
}
}
//繪製圖形
public
void
draw(Graphics g){
g.drawImage(bg,
0, 0,null);
g.drawImage(sprite.getImage(),
Math.round(sprite.getX()),
Math.round(sprite.getY()),null);
→ 獲取圖像,X和Y在Sprite.java
}
//更新動畫
public
void
update(long
timePassed){
if(sprite.getX()
< 0){
sprite.setVelocityX(Math.abs(sprite.getVelocityX()));
}else
if(sprite.getX()
+ sprite.getWidth()
>= s.getWidth()){
sprite.setVelocityX(-Math.abs(sprite.getVelocityX()));
}
→ 如果圖像的寬度小於X,X將正數
如果圖像的寬度比屏幕寬度更大,X會負數
if(sprite.getY()
< 0){
sprite.setVelocityY(Math.abs(sprite.getVelocityY()));
}else
if(sprite.getY()
+ sprite.getHeight()
>= s.getHeight()){
sprite.setVelocityY(-Math.abs(sprite.getVelocityY()));
}
→ → 如果圖像的高度小於Y,Y將正數
如果圖像的高度比屏幕高度更大,Y會負數
sprite.update(timePassed);
}
}
如果你運行這個程序動畫會在屏幕上移動(如果動畫觸摸屏幕的邊界,動畫會彈回來)
沒有留言:
張貼留言