• 締切済み

アニメーションをスタート・ストップさせるボタンについて

12枚の画像をスタートストップボタンでアニメーションさせるプログラムを作りたいのですが、どのように作ればいいのでしょうか? どなたか教えていただけませんでしょうか? ちなみに、一応作ったものはありますが、ここにはのせられなかったので、ご連絡いただければ、添付させていただきたいと思います。 よろしくお願いします。

みんなの回答

  • ssr-y6
  • ベストアンサー率71% (5/7)
回答No.1

 以下は、画像を差し替えながら表示させてアニメーションにするアプリケーションの一例です。 import java.awt.*; import java.awt.event.*; class animecanvas extends Canvas implements ActionListener, Runnable { private static final String FileName[] = {"0.gif", "1.gif", "2.gif", "3.gif", "4.gif", "5.gif", "6.gif", "7.gif", "8.gif", "9.gif"}; public Thread AnimeThread; private Image Cell[]; private Button SB; private boolean RunFlag; private int CellNum; public animecanvas(Button sb) { int i; SB = sb; Cell = new Image[FileName.length]; for (i = 0; i < FileName.length; i ++) Cell[i] = Toolkit.getDefaultToolkit().getImage(FileName[i]); AnimeThread = new Thread(this); CellNum = 0; RunFlag = false; }; public void run() { while (CellNum >= 0) { if (RunFlag) { CellNum ++; if (CellNum >= FileName.length) CellNum = 0; repaint(); }; try { Thread.sleep(500); } catch(Exception ex) { CellNum = -1; }; }; }; public void paint(Graphics g) { g.drawImage(Cell[CellNum], 0, 0, this); }; public void update(Graphics g) { paint(g); }; public void actionPerformed(ActionEvent ae) { if (ae.getActionCommand() == "SB") { if (RunFlag) SB.setLabel("start"); else SB.setLabel("stop"); RunFlag = !RunFlag; }; }; } public class anime { public static void main(String args[]) { Frame MF = new Frame("Anime"); MF.setSize(300, 300); Button SB = new Button("Start"); animecanvas AC = new animecanvas(SB); MF.add(SB, BorderLayout.NORTH); MF.add(AC, BorderLayout.CENTER); SB.addActionListener(AC); SB.setActionCommand("SB"); MF.setVisible(true); AC.AnimeThread.start(); }; }