Java:drawImage动画gif在第一帧冻结
我得到了在小程序中绘制图像的代码,但它是一个动画gif,并且在第一帧停止,就好像它是一个单独的图像一样 这应该是恐怖的骷髅舞,但他只是站着不动 这是我的密码:Java:drawImage动画gif在第一帧冻结,java,image,graphics,awt,gif,Java,Image,Graphics,Awt,Gif,我得到了在小程序中绘制图像的代码,但它是一个动画gif,并且在第一帧停止,就好像它是一个单独的图像一样 这应该是恐怖的骷髅舞,但他只是站着不动 这是我的密码: import java.util.*; import java.awt.*; import java.applet.*; import java.net.*; import java.awt.image.BufferedImage; import javax.imageio.ImageIO; import java.io.*; publ
import java.util.*;
import java.awt.*;
import java.applet.*;
import java.net.*;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.*;
public class Spooky extends Applet
{
Image scary, trumpet, walking;
MediaTracker mt;
AudioClip spoopy;
Graphics buffer;
Image offscreen;
Dimension dim;
public void init()
{
setLayout(null);
mt = new MediaTracker(this);
mt.addImage(scary,1);
mt.addImage(trumpet,1);
mt.addImage(walking,1);
spoopy = getAudioClip(getDocumentBase(),"spoopy.wav");
spoopy.loop();
}
public void paint(Graphics g)
{
try
{
URL url = this.getClass().getResource("spooky.gif");
BufferedImage img;
img = ImageIO.read(url);
mt.addImage(img,1);
g.drawImage(img,0,0,300,300,this);
}
catch(IOException e)
{
}
}
}
我不知道这是否有帮助,但通常情况下,动画需要单独的线程/可运行线程,其余代码需要单独的线程/可运行线程。至少这是我在做一个小游戏时遇到的一个问题。试试这个,如果有帮助请告诉我:) 也请检查此项: 更新:我发现的一个例子()使用了支持GIF的JApplet(Applet是旧的)
你有没有试着不放声音来看看动画是否单独工作?可能声音需要一个单独的可运行/线程,我不知道这是否有帮助,但通常情况下,动画需要一个单独的线程/可运行,其余代码需要一个单独的线程。至少这是我在做一个小游戏时遇到的一个问题。试试这个,如果有帮助请告诉我:) 也请检查此项: 更新:我发现的一个例子()使用了支持GIF的JApplet(Applet是旧的)
你有没有试着不放声音来看看动画是否单独工作?可能声音需要一个单独的可运行/线程,我不知道这是否有帮助,但通常情况下,动画需要一个单独的线程/可运行,其余代码需要一个单独的线程。至少这是我在做一个小游戏时遇到的一个问题。试试这个,如果有帮助请告诉我:) 也请检查此项: 更新:我发现的一个例子()使用了支持GIF的JApplet(Applet是旧的)
你有没有试着不放声音来看看动画是否单独工作?可能声音需要一个单独的可运行/线程,我不知道这是否有帮助,但通常情况下,动画需要一个单独的线程/可运行,其余代码需要一个单独的线程。至少这是我在做一个小游戏时遇到的一个问题。试试这个,如果有帮助请告诉我:) 也请检查此项: 更新:我发现的一个例子()使用了支持GIF的JApplet(Applet是旧的)
你有没有试着不放声音来看看动画是否单独工作?可能声音需要一个单独的可运行/线程,问题在于
ImageIO.read(url)代码>方法。不知道如何,但在内部,它会弄乱gif的读取。相反,从URL构造一个ImageIcon
,并使用ImageIcon
的getImage()
来获取一个Image
另外,不要在paint
方法中加载图像。在init
方法中加载它
public class Spooky extends Applet {
Image image;
public void init() {
URL url = this.getClass().getResource("spooky.gif");
image = new ImageIcon(url).getImage();
}
public void paint(Graphics g) {
super.paint(g);
g.drawImage(image, 0, 0, 300, 300, this);
}
}
问题是ImageIO.read(url)代码>方法。不知道如何,但在内部,它会弄乱gif的读取。相反,从URL构造一个ImageIcon
,并使用ImageIcon
的getImage()
来获取一个Image
另外,不要在paint
方法中加载图像。在init
方法中加载它
public class Spooky extends Applet {
Image image;
public void init() {
URL url = this.getClass().getResource("spooky.gif");
image = new ImageIcon(url).getImage();
}
public void paint(Graphics g) {
super.paint(g);
g.drawImage(image, 0, 0, 300, 300, this);
}
}
问题是ImageIO.read(url)代码>方法。不知道如何,但在内部,它会弄乱gif的读取。相反,从URL构造一个ImageIcon
,并使用ImageIcon
的getImage()
来获取一个Image
另外,不要在paint
方法中加载图像。在init
方法中加载它
public class Spooky extends Applet {
Image image;
public void init() {
URL url = this.getClass().getResource("spooky.gif");
image = new ImageIcon(url).getImage();
}
public void paint(Graphics g) {
super.paint(g);
g.drawImage(image, 0, 0, 300, 300, this);
}
}
问题是ImageIO.read(url)代码>方法。不知道如何,但在内部,它会弄乱gif的读取。相反,从URL构造一个ImageIcon
,并使用ImageIcon
的getImage()
来获取一个Image
另外,不要在paint
方法中加载图像。在init
方法中加载它
public class Spooky extends Applet {
Image image;
public void init() {
URL url = this.getClass().getResource("spooky.gif");
image = new ImageIcon(url).getImage();
}
public void paint(Graphics g) {
super.paint(g);
g.drawImage(image, 0, 0, 300, 300, this);
}
}
我也有类似的问题。这是一个解决办法。但是,如果您试图从InputStream加载GIF(在我的案例中就是这种情况),则需要不同的解决方案。在本例中,我将使用Toolkit类加载您的映像,更具体地说:
我也有类似的问题。这是一个解决办法。但是,如果您试图从InputStream加载GIF(在我的案例中就是这种情况),则需要不同的解决方案。在本例中,我将使用Toolkit类加载您的映像,更具体地说:
我也有类似的问题。这是一个解决办法。但是,如果您试图从InputStream加载GIF(在我的案例中就是这种情况),则需要不同的解决方案。在本例中,我将使用Toolkit类加载您的映像,更具体地说:
我也有类似的问题。这是一个解决办法。但是,如果您试图从InputStream加载GIF(在我的案例中就是这种情况),则需要不同的解决方案。在本例中,我将使用Toolkit类加载您的映像,更具体地说:
如果我对JFrame了解很多,那将非常有用。抱歉,JFrame与此无关-请参阅内部内容;)-检查我的更新,虽然这对普通图像很有用,但你知道我如何让它与BuffereImage一起工作吗?正如我在上面的同一评论中所说:@RyanDwyer From“你可以尝试,但它只会将GIF的“当前”帧绘制到BuffereImage。BuffereImage对象只是静态像素桶,因此它们无法“动画化”如果我对JFrame了解很多,那将非常有用。抱歉,JFrame与此无关-请参阅内部内容;)-检查我的更新,虽然这对普通图像很有效,但你知道我如何才能让它与BuffereImage一起工作吗?正如我在上面的同一评论中所说:@RyanDwyer From“你可以尝试,但它只会将GIF的“当前”帧绘制到BuffereImage。BuffereImage对象只是静态像素桶,所以