0

シンプルなシューティングギャラリータイプのゲームを作成しています。マウスモーションリスナーを作成し、マウスの現在の位置に画像を描画するために使用しています。これはうまくいきますが、カーソルを動かすと画像がちらつきます。ダブルバッファリングのチュートリアルをいくつか試しましたが、どれも機能しません。

これが私のコードです

    public class ShootingGallery extends JApplet implements MouseMotionListener {

        //VARIABLES
        int mouseXPos;
        int mouseYPos;
        Image myImage;
        private Image dbImage;
        private Graphics dbg;

        @Override
        public void init() {            
            setSize(800, 600);//SET UP CURSOR IMAGE
            myImage = getImage(getDocumentBase(),"spongebob.gif");
            addMouseMotionListener(this);//ADD ACTION LISTENERS
        }

        @Override
        public void mouseDragged(MouseEvent e) {            
            moveMouse(e); 
        }        

        @Override
        public void mouseMoved(MouseEvent e) {            
            moveMouse(e);
        }        

        public void moveMouse(MouseEvent e){            
              Graphics g = getGraphics();             
              mouseXPos = e.getX() - (myImage.getWidth(null) / 2);
              mouseYPos = e.getY() - (myImage.getHeight(null) / 2);     
              repaint();
        } 

        public void paint(Graphics g)
        {
              super.paint(g);            
              g.drawImage(myImage, mouseXPos, mouseYPos, this);
        }
   }

この問題に関するヘルプは大歓迎です

4

2 に答える 2

0

マウス モーション リスナーは、マウスが画面上を通過するときに非常に頻繁に呼び出されます。おそらく、通過したピクセルごとに 1 回です。頻繁に画像を描画すると、コードが追いつかなくなり、ちらつきが発生する可能性があります。

于 2013-06-15T07:13:55.353 に答える