Adol  
          日歷
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345
          統計
          • 隨筆 - 2
          • 文章 - 6
          • 評論 - 5
          • 引用 - 0

          導航

          常用鏈接

          留言簿(1)

          隨筆檔案

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

           
            1/*
            2    學習如何使用雙緩沖消除閃爍,實現主要在 update()方法里
            3*/

            4import java.awt.*;
            5import java.awt.event.*;
            6import javax.swing.*;
            7
            8class TestCanvas extends Canvas
            9{
           10    private int x,y;
           11    
           12    TestCanvas()
           13    {
           14        this.setSize(400400);
           15        x=200;
           16        y=50;
           17    }
              
           18    
           19    public void leftMove()
           20    {
           21        x-=50;
           22        if(x<=-50) x=this.getWidth();
           23        repaint();
           24    }

           25    
           26    public void rightMove()
           27    {
           28        x+=50;
           29        if(x>=this.getWidth()) x=-50;
           30        repaint();
           31    }

           32    
           33    public void upMove()
           34    {
           35        y-=50;
           36        if(y<=-50) y=this.getHeight();
           37        repaint();    
           38    }

           39    
           40    public void downMove()
           41    {
           42        y+=50;
           43        if(y>=this.getHeight()) y=-50;
           44        repaint();
           45    }

           46    
           47    public void paint(Graphics g)
           48    {
           49        g.fillOval(x, y, 5050);
           50    }

           51    
           52    public void update(Graphics g) //實現消除閃爍
           53    {
           54        Image image;      //創建一張和原來大小一樣的圖像
           55        image=createImage(this.getWidth(),this.getHeight()); 
           56        Graphics gp=image.getGraphics(); //獲得此創建圖像的 畫筆
           57        paint(gp);  //調用paint  對此圖像作畫
           58        
           59        g.drawImage(image, 00this);  //將此圖像畫到(this)畫布上
           60    }

           61
           62}

           63
           64class MyKeyAdapter extends KeyAdapter
           65{
           66    TestCanvas tp;
           67    MyKeyAdapter(TestCanvas tp)
           68    {
           69        this.tp=tp;
           70    }

           71    public void keyPressed(KeyEvent e)
           72    {
           73        if(e.getKeyCode()==KeyEvent.VK_LEFT)
           74            tp.leftMove();
           75        else if(e.getKeyCode()==KeyEvent.VK_RIGHT)
           76            tp.rightMove();
           77        else if(e.getKeyCode()==KeyEvent.VK_UP)
           78            tp.upMove();
           79        else if(e.getKeyCode()==KeyEvent.VK_DOWN)
           80            tp.downMove();
           81    }

           82}

           83
           84public class ClearUpFlicker extends JFrame
           85{
           86    ClearUpFlicker()
           87    {
           88        super("學習如何使用雙緩沖消除閃爍");
           89        setBounds(300150400400);
           90        setVisible(true);
           91        this.addWindowListener(new WindowAdapter()
           92        {
           93            public void windowClosing(WindowEvent e)
           94            {
           95                dispose();
           96                System.exit(0);
           97            }

           98        }
          );
           99    }

          100    public static void main(String[] args)
          101    {
          102        ClearUpFlicker jf=new ClearUpFlicker();
          103        TestCanvas tp=new TestCanvas();
          104        tp.addKeyListener(new MyKeyAdapter(tp));
          105        jf.add(tp);
          106        tp.requestFocusInWindow();
          107    }

          108
          109}

          110
          posted on 2009-08-12 23:18 Adol 閱讀(234) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
           
          Copyright © Adol Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 新巴尔虎右旗| 扶沟县| 琼中| 朔州市| 合山市| 闽清县| 额尔古纳市| 峨山| 开江县| 罗源县| 绥宁县| 东山县| 郧西县| 阳山县| 开江县| 平利县| 板桥市| 张掖市| 卢龙县| 汉沽区| 中卫市| 那曲县| 利津县| 平陆县| 叶城县| 广宁县| 静安区| 弥勒县| 连云港市| 陵川县| 大足县| 嘉善县| 泾阳县| 南汇区| 元谋县| 阿尔山市| 武穴市| 合阳县| 永寿县| 卓尼县| 华阴市|