ぼんさい塾

ぼんさいノートと補遺に関する素材や注釈です.ミスが多いので初稿から1週間を経た重要な修正のみ最終更新日を残しています.

Java のプログラム (26)

2012-03-31 20:59:27 | 暮らし

記事一覧
ソースコードについて

6.4 パラパラ漫画

パラパラ漫画はフリーソフトの Giam 等で容易に作れるので [6-19],教材作成等の目的にはこれで十分ですが(),「パラパラ漫画 アプレット」で検索すると,パラパラ漫画の作り方に関する説明がいくつか見つかります.「パラパラ漫画」では見つかりませんでしたが,[6-25] のプログラムが使い易いと思います.例えば Giam で作成した(右クリックで確認できます)

                

は,[6-25] のサンプルプログラムを真似して次のように作れます(青字は変更部分).

//------------------------------------------
/**
 *
 * @author http://www.javadrive.jp/applet/sample/index1.html
 */
import java.applet.Applet;
import java.awt.Graphics;
//import java.awt.Color;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.MediaTracker;

public class JDS1 extends Applet implements Runnable{
  Image img[];
  MediaTracker tracker;
  Thread thread = null;
  int picNo;
  Dimension size;
  Image back;
  Graphics buffer;

  public void init(){
    tracker = new MediaTracker(this);
    img = new Image[3];
    for (int i = 0 ; i < 3 ; i++){
      String file = "fig" + (i + 1) + ".gif";
      img[i] = getImage(getCodeBase(), file);
      tracker.addImage(img[i], i);
    }
    picNo = 0;
    size = getSize();
    back = createImage(size.width, size.height);
    buffer = back.getGraphics();
    thread = new Thread(this); thread.start();
  }

  public void start(){
    try {tracker.waitForAll();} catch (InterruptedException e){ }
  }

  public void update(Graphics g){paint(g);}

  public void paint(Graphics g){
    //buffer.setColor(getBackground());
    //buffer.fillRect(0, 0, size.width, size.height);
    buffer.drawImage(img[picNo], 0, 0, this);
    g.drawImage(back, 0, 0, this);
  }

  public void run(){
    while(true){
      picNo += 1; if (picNo >= 3){picNo = 0;}
      repaint();
      try{Thread.sleep(100);}catch (InterruptedException e){ }
    }
  }
}
//------------------------------------------
//parapara.html (全角の不等号は半角にしてください)
HTML><BODY
    applet height=250 width=250 code="JDS1.class"></applet
/BODY></HTML
//------------------------------------------
http://www.hakurei-isl.org/m-miyata/applet/parapara/JDS1.html は実行可能です.
(fig1.gif, fig2.gif, fig3.gif もこのフォルダにあります)

・クラス名は JavaDriveSample1 に由来します.オリジナルを尊重して変数名等も変えていません.
・メディアトラッカーは [6-26] で説明されています.
・NetBeans IDE では「新規 > Applet フォーム」にするとデザイン画面付きのクラスが生成されます.
  デザイン画面の設定に関する部分は消去不能なので,上記のようなプログラムは「Javaクラス」を選びます.
  「ファイルをデバッグ」でアプレットビューアが起動されます.

progJ.pdf は progC.pdf の発展としてデータ構造とイベント駆動を主題にするので,「Java のプログラム」はこれで終り,sys.pdf に戻ります.お付き合い有り難うございました.
※ すみません.気が変わり,XML を勉強したくなりました.(04-04追記)

[6-19] Giam ダウンロードのページ
  http://homepage3.nifty.com/furumizo/giamd.htm
[6-20] 10 ぱらぱら漫画アニメーション
  http://crew-lab.sfc.keio.ac.jp/lectures/2009s_tcafe/html4/index_p3_c10.html
[6-21] 第 6週:アプレットの基本(2) - SFC
  http://web.sfc.keio.ac.jp/~tsaito/1bc/06.html
  6.6 「ぱらぱらマンガ」を表示するアプレット
[6-22] プログラミング課題
  http://www.fumikichan.net/prog/Java/kd030401.jsp
  パラパラ漫画のようにアプレット上に動かすプログラムを作成します。
[6-23] アニメーションの 巻
  http://www.interq.or.jp/snake/koteitan/tips/java/anime/anime.htm
  下記に1つのバグを含むサンプルコードを示します。
[6-24] Applet(アプレット)入門
  http://www.javadrive.jp/applet/
[6-25] Applet(アプレット)入門 > 画像を切り替える
  http://www.javadrive.jp/applet/sample/index1.html
[6-26] Applet(アプレット)入門 > MediaTrackerによる画像読み込み待ち
  http://www.javadrive.jp/applet/image/index5.html
----------------------
[6-27] Swingを使ってみよう
  Swingを使ってみよう - Java GUIプログラミング
  http://www.javadrive.jp/tutorial/
[6-28] Swingを使ってみよう > CardLayoutクラス
  http://www.javadrive.jp/tutorial/cardlayout/
  first(), last(), next(), previous() があり,パラパラ漫画向き.
[6-29] JLayeredPane (Java 2 Platform SE 5.0)
  http://e-class.center.yuge.ac.jp/jdk_docs/ja/api/javax/swing/JLayeredPane.html
  高度なアニメを作るときに便利.[6-12] は表示できなくなりました
 (sun → oracle で英語だけになりましたが,上記サイトで日本語ドキュメントを提供)
[6-30] How to Use Layered Panes(英語)
  http://docs.oracle.com/javase/tutorial/uiswing/components/layeredpane.html