• 締切済み

jpeg画像でアニメーションを作る

jpeg画像10枚くらいをつかい、アニメーションを作りたく以下のようなプログラム(全部載せられませんでした)を組んでみました。しかし、画像読み込みにすごく時間がかかり、アニメーションという感じがしないほど、さっと画像が表示されて終わってしまいます。もっと、一枚一枚をゆっくり表示させたく画像読み込みの時間も短縮したいのですが、何か良い方法はありますでしょうか(ちなみに画像のキャンバスサイズは512×384です) import java.applet.*; import java.awt.*; import java.net.*; public class im2a extends Applet implements Runnable{ Image im[] = new Image[10]; URL url; String fn[]={"anime10.jpg","anime11.jpg","anime4.jpg","anime5.jpg",  "anime1.jpg","anime2.jpg","anime1.jpg","anime2.jpg",  "anime8.jpg","anime7.jpg"}; Thread th; MediaTracker mt = new MediaTracker(this); String ms =""; String s =""; int i=0; int j=0; int dt=100; int phase=2 ; boolean ok=false;   public void start(){ th =new Thread(this); th.start(); }    public void readImage(){ ms ="画像入力準備中"; repaint(); for(i=0;i<9;++i){ im[i]=getImage(getDocumentBase(),fn[i]); mt.addImage(im[i],i); ok=false; while(!ok){ try{ Thread.sleep(2000); } catch(InterruptedException ee) { } ok=mt.checkID(i,true); } ms="画像"+i+"読み込み終了"; repaint(); } }

みんなの回答

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.1

画像を読み込む時に、一枚読んでは2秒ずつsleepしていては、読み込みにすごっく時間掛かるのもあたりまえ。 readImage()での読み込みは、sleppなど掛けずにさっさとloadさせて、 表示は、run()関数内にwhileループを作り表示変更とrepaint()してはsleepを掛けるようにすればいい。 で、readImage()はどこから呼び出されているのかな? run()が省略されている? 画像初期化用関数は、start()で一回呼び出せば十分と思うけど。

専門家に質問してみよう