プロが教えるわが家の防犯対策術!

JAVAのプログラムでアプレットを作成しています。
まだ、素人で何も分からない状態ですが質問があります。
拡張子がjpgのファイルを十枚持っています。その画像は1枚目から順番にめっくていくとアニメーションのような動画となります。順番にめくっていくインターバル時間は自由に設定したいと考えています。

質問1:このような場合オブジェクト指向的な考え方は?
質問2:jpgファイルの扱い方は?

無知な私にどうぞ教えてください。

A 回答 (4件)

アニメーションを実現するアプレットなら、JDKをインストールした際にAnimator.javaというサンプルファイルが同時にインストールされていたとおもいますので、そちらを参考にされてはどうでしょうか?


jpgファイルに関してはソースに自分でどこにそのファイルが存在するかを指示しておく必要があります。
通常カレントに「images」などというフォルダを作成しておき、1.jpg,2.jpg・・・10.jpgなどと順番をつけておき、for文などでくり返し表示させたりするのではないでしょうか。
この中で時間をアイドルさせれば可能ではないでしょうか?

この回答への補足

申し訳ありません。情報不足でした。私が使用しているのはマイクロソフト社のJ++を使っています。なにか良いサンプルファイルがあればいいのですが、もし知っているサイトがあれば教えてください。

補足日時:2000/12/02 16:58
    • good
    • 0

OOPLな分析を施すと、処理の方法によって二分するかも知れません。


(本当はもっとあるでしょうけど)

・JPEGクラス
  属性:JPEGデータ
・リストコレクション
  属性:アイテム
  操作:追加、削除、挿入、参照 
・グラフィックプレーンクラス
  属性:表示

グラフィックプレーン-(保持)->リストコレクション-(保持)->JPEGクラス

といようなクラス関連が妥当かな、と思います。
JPEGでなく、GIFになっても変更が容易ですし。
あとはコレクションを参照して表示して、インターバル間
sleepするだけかな?


1.グラフィックプレーンなんて殆ど造語です。
Javaにはぴったりマッチするクラスがありましたが
名前忘れました。すごく一般的なものです。

2.コレクション
Javaにはあるんでしたっけ?あると思いますが。
C++なら、テンプレートで作成すると楽です。
この場合、配列(Array)でもいいのかな、別に。

3.はっきり言ってJavaだとこんなことを考えなくとも楽勝です。
でもちょっと意識してみましょう。
    • good
    • 0
この回答へのお礼

ありがとうございました。この方法でトライしてみたいと思います。いきずまったら、また教えてください。

お礼日時:-0001/11/30 00:00

アップレットでアニメーションするんなら


下記URLなんか参考になるかと思いますよ

参考URL:http://www.njk.co.jp/otg/Study/JavaStudy/
    • good
    • 0
この回答へのお礼

勉強になります。ありがとうございました。

お礼日時:-0001/11/30 00:00

 画像をタイマで差し替えながらアニメーションにするアプレットのJavaプログラムとページHTMLは、


以下のようになります。

-----ページHTML-----

<html>

<head><title>AnimeApplet</title></head>

<body>

<applet code="animeapp" codebase="." width="300" height="300">
<param name="FileName" value="0.gif 1.gif 2.gif 3.gif 4.gif 5.gif 6.gif 7.gif 8.gif 9.gif">
<param name="Interval" value="500">
</applet>

</body>

</html>

-----Javaプログラム(animeapp.java)-----

import java.awt.*;
import java.applet.*;
import java.net.*;

public class animeapp extends Applet implements Runnable {

private Thread TimerThread;
private Image AnimeCell[];
private int Interval, CellNumber, CellCount;
private boolean ImageOK = false;

public void init() {

int Int1;
String Str1[] = getParameter("FileName").split(" ");
Interval = Integer.parseInt(getParameter("Interval"));
TimerThread = new Thread(this);
CellNumber = Str1.length;
CellCount = 0;

AnimeCell = new Image[CellNumber];
for (Int1 = 0; Int1 < CellNumber; Int1 ++) AnimeCell[Int1] = getImage(getDocumentBase(), Str1[Int1]);
ImageOK = true;

};

public void start() {

repaint();
TimerThread.start();

};

public void paint(Graphics g) {

if (ImageOK) g.drawImage(AnimeCell[CellCount], 0, 0, this);

};

public void update(Graphics g) {

paint(g);

};

public void run() {

while(CellCount >= 0) {

try {Thread.sleep(Interval); } catch(Exception ex) {};

if ((CellCount + 1) >= CellNumber) CellCount = 0;
else CellCount ++;

repaint();

};

};

}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!