2012年6月12日 星期二

Java Game Development(24) - Watching the Sprite Move


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); 獲取圖像,XYSprite.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()));
} 如果圖像的寬度小於XX正數 如果圖像的寬度比屏幕寬度更大,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()));
} → 如果圖像的度小於YY正數 如果圖像的高度比屏幕高度更大,Y會負數
sprite.update(timePassed);
}
}



如果你運行這個程序動畫會在屏幕上移動(如果動畫觸摸屏幕的邊界,動畫會回來)

沒有留言:

張貼留言