關於applet最簡單的圖片移動效果的最佳化求解
先貼出程式碼,沒啥花頭的,有幅背景圖片,然後我讓另一個小圖片在背景圖片上自動移動,效果也出來了,也沒有閃爍,感覺是很不錯的了,但是,我抱著試試看的態度請教一下,能不能有更好的效果?比方說,象gba模擬器上的移動效果,完全平滑,沒有任何任何抖動,根本感覺不到圖片一幀一幀地移動,但是我這段程式碼出來的效果,就是能感覺到圖片是一幀一幀的移動,以目前我的能力,已經最佳化不了了。
謝謝。
public class flyDragon extends Applet implements Runnable{
Image bg,currentImg;
MediaTracker tracker;
Image []dragon=new Image[6];
int x,y=0;
int flydistance=20;
Thread thread;
int birdImage_width,bg_width,bg_height;
Image offScreenImage;
Graphics offScreenG;
Image offl;
public void init(){
tracker=new MediaTracker(this);
for(int i=0;i<dragon.length;i++){
dragon=getImage(this.getCodeBase(),"yidongtou2.png");
tracker.addImage(dragon, 0);
}
currentImg=dragon[0];
bg=getImage(this.getCodeBase(),"maxMap.PNG");
tracker.addImage(bg, 0);
try{
tracker.waitForAll();
}catch(Exception e){
e.printStackTrace();
}
bg_width=bg.getWidth(this);
bg_height=bg.getHeight(this);
this.setSize(720, 480);
}
public void start(){
if(thread==null){
thread=new Thread(this);
thread.start();
}
}
public void stop(){
if(thread!=null){
thread.stop();
thread=null;
}
}
public void run(){
birdImage_width=dragon[0].getWidth(this);
int i=0;int flag=0;
while(true){
i=(i+1)%dragon.length;
if(flag==0&&y<=700)y+=2;
if(y>700)flag=1;
if(flag==1&&y>0)y-=2;
if(y<0)flag=0;
repaint();
try {
Thread.sleep(66);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void paint(Graphics g){
g.drawImage(bg, 0, 0,720, 480,this);
g.drawImage(dragon[0], y, 0,this);
// g.drawImage(bg, 0, 0, 720, 480, 0, 0, 0, 0, this);
}
public void update(Graphics g){
Dimension d =this.size();
if(offl==null){
offl=this.createImage(720, 480);
offScreenG=offl.getGraphics();
}
offScreenG.clearRect(0,0,720, 480);
paint(offScreenG);
g.drawImage(offl, 0, 0,720, 480,null);
}
public static void main(String art[]){
flyDragon l = new flyDragon();
l.setSize(400,400);
l.setVisible(true);
}
}
謝謝。
public class flyDragon extends Applet implements Runnable{
Image bg,currentImg;
MediaTracker tracker;
Image []dragon=new Image[6];
int x,y=0;
int flydistance=20;
Thread thread;
int birdImage_width,bg_width,bg_height;
Image offScreenImage;
Graphics offScreenG;
Image offl;
public void init(){
tracker=new MediaTracker(this);
for(int i=0;i<dragon.length;i++){
dragon=getImage(this.getCodeBase(),"yidongtou2.png");
tracker.addImage(dragon, 0);
}
currentImg=dragon[0];
bg=getImage(this.getCodeBase(),"maxMap.PNG");
tracker.addImage(bg, 0);
try{
tracker.waitForAll();
}catch(Exception e){
e.printStackTrace();
}
bg_width=bg.getWidth(this);
bg_height=bg.getHeight(this);
this.setSize(720, 480);
}
public void start(){
if(thread==null){
thread=new Thread(this);
thread.start();
}
}
public void stop(){
if(thread!=null){
thread.stop();
thread=null;
}
}
public void run(){
birdImage_width=dragon[0].getWidth(this);
int i=0;int flag=0;
while(true){
i=(i+1)%dragon.length;
if(flag==0&&y<=700)y+=2;
if(y>700)flag=1;
if(flag==1&&y>0)y-=2;
if(y<0)flag=0;
repaint();
try {
Thread.sleep(66);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void paint(Graphics g){
g.drawImage(bg, 0, 0,720, 480,this);
g.drawImage(dragon[0], y, 0,this);
// g.drawImage(bg, 0, 0, 720, 480, 0, 0, 0, 0, this);
}
public void update(Graphics g){
Dimension d =this.size();
if(offl==null){
offl=this.createImage(720, 480);
offScreenG=offl.getGraphics();
}
offScreenG.clearRect(0,0,720, 480);
paint(offScreenG);
g.drawImage(offl, 0, 0,720, 480,null);
}
public static void main(String art[]){
flyDragon l = new flyDragon();
l.setSize(400,400);
l.setVisible(true);
}
}
相關文章
- JavaScript跟隨滑鼠移動的圖片效果JavaScript
- 簡單的圖片間隔指定時間切換效果
- android圖片輪播效果,RollViewPager的簡單使用AndroidViewpager
- JQuery實現簡單美觀的圖片切換效果jQuery
- 原生JS實現最簡單的圖片懶載入JS
- 原生 JS 實現最簡單的圖片懶載入JS
- js滑鼠移動實現圖片立體滾動效果JS
- 攻防世界-簡單的圖片
- 最簡單的移動端適配方案(rem+vw)REM
- 藍橋杯-移動距離(最簡單的寫法)
- 非常簡單的使用jqueryfancybox外掛實現的檢視圖片效果jQuery
- 基於 Vue 的移動端圖片檢視外掛.Vue
- C#圖片處理之:最簡單的柔化演算法C#演算法
- 一個基於canvas的移動端圖片編輯器Canvas
- 一個applet的簡單問題APP
- 最為簡單的動態數字時鐘效果程式碼例項
- 資訊圖:關於移動應用的趣味數字
- 關於移動應用的趣味數字–資訊圖
- 關於去除圖片上的水印
- 基於RxJava2實現的簡單圖片爬蟲RxJava爬蟲
- 實現簡單的輪播圖(單張圖片、多張圖片)
- 一個簡單的圖片水印工具
- 關於BFC的簡單理解
- 關於RabbitMQ的簡單理解MQ
- 關於python操作excel,xlwt,xlwd,最簡單的操作介紹PythonExcel
- 實現一個簡單的基於 WebAssembly 的圖片處理應用Web
- Fresco圖片載入的簡單應用
- 最簡單的網路圖片的爬取 --Pyhon網路爬蟲與資訊獲取爬蟲
- jQuery圖片無縫滾動效果jQuery
- 不同瀏覽器下圖片滾動效果的js瀏覽器JS
- 最簡單的移動端適配方案(rem+vw)--沒有之一REM
- 關於 PHP 框架的簡單思考PHP框架
- 關於GO反射的簡單定律Go反射
- 關於JSON的簡單使用JSON
- 簡單實用的android 圖片的壓縮Android
- Python:圖片合視訊(最簡)Python
- iOS裡關於圖片的Crop和ResizeiOS
- vue 關於圖片路徑的問題Vue