Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.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 在我的游戏中设置瓷砖动画_Java_Image_Animation_Tiles_2d Games - Fatal编程技术网

Java 在我的游戏中设置瓷砖动画

Java 在我的游戏中设置瓷砖动画,java,image,animation,tiles,2d-games,Java,Image,Animation,Tiles,2d Games,我正在制作一个口袋妖怪风格的2D java游戏,不使用库,只使用纯java,我正在制作一个水砖动画,但遇到了一些问题。我希望瓷砖每半秒左右更新一次。我将发布我的主类、抽象瓷砖类、水类和屏幕类,以便您可以找到一种方法,让我知道如何在游戏中设置瓷砖动画 附言:现在我正在尝试制作水砖的动画。所有精灵都是测试用的,稍后会更改 DropBox上的代码:,,。我在《其他动画问题》中发布了我的动画教程,尽管其他人似乎不太喜欢。也许你会发现它更有用,我只使用了java.awt。有一个关于如何设置图像动画的工作示

我正在制作一个口袋妖怪风格的2D java游戏,不使用库,只使用纯java,我正在制作一个水砖动画,但遇到了一些问题。我希望瓷砖每半秒左右更新一次。我将发布我的主类、抽象瓷砖类、水类和屏幕类,以便您可以找到一种方法,让我知道如何在游戏中设置瓷砖动画

附言:现在我正在尝试制作水砖的动画。所有精灵都是测试用的,稍后会更改


DropBox上的代码:,,。

我在《其他动画问题》中发布了我的动画教程,尽管其他人似乎不太喜欢。也许你会发现它更有用,我只使用了java.awt。有一个关于如何设置图像动画的工作示例。在我的方法中-要设置动画的图像的所有平铺都包含在一个长图像中,通过更新要加载的缓冲区部分的X坐标,可以滚动帧并以这种方式实现动画

享受:

import java.awt.*;
导入java.awt.event.*;
导入java.awt.image.buffereImage;
导入javax.swing.*;
类动画水{
公共静态void main(字符串[]args){
Runnable r=新的Runnable(){
@凌驾
公开募捐{
最终JPanel gui=新JPanel(新网格布局(2,0,0,0));
最终动画文件[]瓷砖=新动画文件[8];

对于(int ii=0;I您使用的是GLUT还是Equalant?您可以使用gif imagesya,但我想学习如何通过代码实现。为了更快地获得更好的帮助,请发布一条消息。“谢谢,亨特。”不要包含SIG。在问题中,它们是噪音。
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import javax.swing.*;

class AnimatedWater {

    public static void main(String[] args) {
        Runnable r = new Runnable() {

            @Override
            public void run() {
                final JPanel gui = new JPanel(new GridLayout(2,0,0,0));

                final AnimatedTile[] tiles = new AnimatedTile[8];
                for (int ii=0; ii<tiles.length; ii++) {
                    tiles[ii] = new AnimatedTile();
                    gui.add(new JLabel(new ImageIcon(tiles[ii])));
                }
                ActionListener listener = new ActionListener() {

                    @Override
                    public void actionPerformed(ActionEvent e) {
                        for (int ii=0; ii<tiles.length; ii++) {
                            tiles[ii].paintImage();
                            gui.repaint();
                        }
                    }
                };
                Timer timer = new Timer(50, listener);
                timer.start();

                JOptionPane.showMessageDialog(null, gui);
                timer.stop();
            }
        };
        // Swing GUIs should be created and updated on the EDT
        // http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html
        SwingUtilities.invokeLater(r);
    }
}

class AnimatedTile extends BufferedImage {

    GradientPaint[] frameGradient;
    int frame = 0;

    AnimatedTile() {
        super(60,60,BufferedImage.TYPE_INT_RGB);
        frameGradient = new GradientPaint[6];
        for (int ii=0; ii<frameGradient.length; ii++) {
            frameGradient[ii] = new GradientPaint(
                    0f,(float)ii,Color.BLUE, 
                    0f,(float)ii+3,Color.CYAN,true);
        }
    }

    public void paintImage() {
        Graphics2D g = createGraphics();
        if (frame==frameGradient.length-1) frame = 0;
        else frame++;
        g.setPaint(frameGradient[frame]);
        g.fillRect(0, 0, getWidth(), getHeight());
        g.dispose();
    }
}