⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 animatedsprite.java

📁 一个java的免费游戏引擎,里面有文档,和例子
💻 JAVA
字号:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi 

package com.golden.gamedev.object;

import java.awt.Graphics2D;
import java.awt.image.BufferedImage;

// Referenced classes of package com.golden.gamedev.object:
//            Sprite, Timer

public class AnimatedSprite extends Sprite
{

    private transient BufferedImage images[];
    private int imagePos;
    private int startAnimationFrame;
    private int finishAnimationFrame;
    private boolean isAnimate;
    private boolean isLoopAnim;
    private Timer timer;

    public AnimatedSprite(BufferedImage abufferedimage[], double d1, double d2)
    {
        super(d1, d2);
        if(abufferedimage != null)
        {
        	images = abufferedimage;
            width = abufferedimage[0].getWidth();
            height = abufferedimage[0].getHeight();
            startAnimationFrame = 0;
            finishAnimationFrame = abufferedimage.length - 1;
        }
        timer = new Timer(60);
    }

    public AnimatedSprite(BufferedImage abufferedimage[])
    {
        this(abufferedimage, 0.0D, 0.0D);
    }

    public AnimatedSprite(double d1, double d2)
    {
        this(null, d1, d2);
    }

    public AnimatedSprite()
    {
        this(0.0D, 0.0D);
    }

    public void setImages(BufferedImage abufferedimage[])
    {
    	images = null;
    	imagePos = 0;
    	startAnimationFrame = 0;
        if(abufferedimage == null || abufferedimage[0] == null)
        {
            width = height = finishAnimationFrame = 0;
            return;
        } else
        {
        	images = abufferedimage;
            width = abufferedimage[0].getWidth();
            height = abufferedimage[0].getHeight();
            finishAnimationFrame = abufferedimage.length - 1;
            return;
        }
    }

    public void setImage(BufferedImage bufferedimage)
    {
        throw new RuntimeException("Animated Sprite need an array of images, use setImages(BufferedImage[]) instead!");
    }

    public BufferedImage[] getImages()
    {
        return images;
    }

    public BufferedImage getImage(int i)
    {
        return images[i];
    }

    public BufferedImage getImage()
    {
        return images[imagePos];
    }

    public void setFrame(int i)
    {
    	imagePos = i + startAnimationFrame;
        if(imagePos > finishAnimationFrame)
        {
        	imagePos = startAnimationFrame;
            return;
        }
        if(imagePos < startAnimationFrame)
        	imagePos = finishAnimationFrame;
    }

    public int getFrame()
    {
        return imagePos;
    }

    public void setAnimationFrame(int start, int finish)
    {
        if(start != startAnimationFrame || finish != finishAnimationFrame)
        {
        	startAnimationFrame = start;
        	finishAnimationFrame = finish;
            imagePos = startAnimationFrame;
        }
    }

    public int getStartAnimationFrame()
    {
        return startAnimationFrame;
    }

    public int getFinishAnimationFrame()
    {
        return finishAnimationFrame;
    }

    public void update(long elapsedTime)
    {
        super.update(elapsedTime);
        if(isAnimate && timer.action(elapsedTime))
            updateAnimation();
    }

    protected void updateAnimation()
    {
        if(++imagePos > finishAnimationFrame)
        {
        	imagePos = startAnimationFrame;
            if(!isLoopAnim)
            	isAnimate = false;
        }
    }

    public void render(Graphics2D graphics2d, int x, int y)
    {
        graphics2d.drawImage(images[imagePos], x, y, null);
    }

    public boolean isAnimate()
    {
        return isAnimate;
    }

    public void setAnimate(boolean flag)
    {
    	isAnimate = flag;
    }

    public boolean isLoopAnim()
    {
        return isLoopAnim;
    }

    public void setLoopAnim(boolean flag)
    {
    	isLoopAnim = flag;
    }

    public void setAnimationTimer(Timer timer)
    {
    	this.timer = timer;
    }

    public Timer getAnimationTimer()
    {
        return timer;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -