Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何显示我的播放器';使用java创建sprite表_Java_User Interface_Graphics2d_Game Development - Fatal编程技术网

如何显示我的播放器';使用java创建sprite表

如何显示我的播放器';使用java创建sprite表,java,user-interface,graphics2d,game-development,Java,User Interface,Graphics2d,Game Development,您好,我真的需要您的帮助,如果您愿意帮助我,我将非常感谢。我最近开始学习java 我正在制作一个java程序,允许我的玩家跳跃并移动到鼠标的位置,我认为我已经成功地做到了,但它并不是很具体 此外,我想显示我的雪碧表,使他看起来像他真的在走路,但我有一个问题,在这一部分 这是我的密码: package animation; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.

您好,我真的需要您的帮助,如果您愿意帮助我,我将非常感谢。我最近开始学习java

我正在制作一个java程序,允许我的玩家跳跃并移动到鼠标的位置,我认为我已经成功地做到了,但它并不是很具体

此外,我想显示我的雪碧表,使他看起来像他真的在走路,但我有一个问题,在这一部分 这是我的密码:

package animation;

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.image.BufferStrategy;
import java.awt.*;

import javax.swing.*;

import animation.Boulle.move;
import gfx.Sprite;
import gfx.SpriteSheet;

public class deux_bulle extends JFrame implements MouseListener, MouseMotionListener {
    Monp p;

    int X, Y, x = 150, y = 150;
    Thread t, t2, t3,t4;
    int f = 0;
    boolean b = false;
    public Graphics g;

    private int framedelay;
    public static SpriteSheet sheet;
    public static gfx.Sprite Sprite[] = new gfx.Sprite[3]; // my sprite sheet
                                                            // has 3 pictures

    public deux_bulle() {
        setSize(400, 400);

        p = new Monp();

        sheet = new SpriteSheet("/Untitled.png");
        add(p);
        p.addMouseListener(this);
        p.addMouseMotionListener(this);

        for (int i = 0; i < Sprite.length; i++) {
            Sprite[i] = new Sprite(sheet, i + 1, 1);
        }

    }

    class Monp extends JPanel {

        @Override
        public void paint(Graphics g) {

            super.paint(g);

            g.drawImage(deux_bulle.Sprite[f].getBufferedIamge(), x, y, 200, 200, null);

        }
    }

    class moveX implements Runnable {

        @Override
        public void run() {

            while (x < X) {
                try {
                    x++;
                    if (f < 3)

                    //g.drawImage(deux_bulle.Sprite[f].getBufferedIamge(), x, y, 200, 200, null);
                    repaint();
                    Thread.sleep(5);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }

            while (x > X) {
                try {
                    x--;
                    repaint();
                    Thread.sleep(5);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }

    }

    class image implements Runnable{
        public void run() {
            framedelay++;
            if (framedelay>=3)
          {f++;
                if(f>=3)
              {f=0;}
                framedelay=0;}
        }}
    class moveY implements Runnable {

        @Override
        public void run() {
            while (y < Y) {
                try {
                    y++;
                    repaint();

                    Thread.sleep(5);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

            while (y > Y) {
                try {

                    y--;
                    repaint();

                    Thread.sleep(5);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }

    }

    class jump implements Runnable {

        @Override
        public void run() {
            int p = y;
            while (y != Y) {
                try {
                    y--;
                    repaint();

                    Thread.sleep(5);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            while (y != p) {
                try {
                    y++;
                    repaint();

                    Thread.sleep(5);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

        }
    }

    public static void main(String[] args) {
        deux_bulle db = new deux_bulle();
        db.setVisible(true);
    }

    @Override
    public void mouseClicked(MouseEvent e) {
        if (e.getClickCount() == 2) {
            Y = 70;

            t3 = new Thread(new jump());
            t3.start();
        }
    }

    @Override
    public void mouseEntered(MouseEvent arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void mouseExited(MouseEvent arg0) {

    }

    @Override
    public void mousePressed(MouseEvent e) {
        X = e.getX();
        Y = e.getY();
            t4 = new Thread(new image());
            t = new Thread(new moveX());
            t2 = new Thread(new moveY());
            t.start();
            t2.start();
            t4.start();


    }

    @Override
    public void mouseReleased(MouseEvent arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void mouseDragged(MouseEvent e) {
        // TODO Auto-generated method stub
        x = e.getX();
        y = e.getY();
        repaint();
    }

    @Override
    public void mouseMoved(MouseEvent e) {
        // TODO Auto-generated method stub

    }

}
我的雪碧课

package gfx;

import java.awt.image.BufferedImage;

public class Sprite {
 public SpriteSheet sheet;
 public BufferedImage image;
    public Sprite(SpriteSheet sheet,int x,int y) {
        image= sheet.getSprite(x, y);
    }
 public BufferedImage getBufferedIamge(){
    return image;

 }
}

,作为一般建议,您不需要三个线程,一个就可以了,它应该协调状态更新(移动)、更新UI和管理帧率。为了简单起见,Swing
计时器可能是启动的更好地方谢谢这对我有帮助,我将尝试使用计时器,作为一般建议,您不需要三个线程,一个就可以了,它应该协调状态更新(移动),更新UI和管理帧率。为了简单起见,Swing
计时器可能是一个更好的启动位置。谢谢这对我有帮助,我将尝试使用计时器
package gfx;

import java.awt.image.BufferedImage;

public class Sprite {
 public SpriteSheet sheet;
 public BufferedImage image;
    public Sprite(SpriteSheet sheet,int x,int y) {
        image= sheet.getSprite(x, y);
    }
 public BufferedImage getBufferedIamge(){
    return image;

 }
}