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