12枚の画像をスタートストップボタンでアニメーションさせるプログラムを作りたいのですが、どのように作ればいいのでしょうか?
どなたか教えていただけませんでしょうか?

ちなみに、一応作ったものはありますが、ここにはのせられなかったので、ご連絡いただければ、添付させていただきたいと思います。

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (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();

};

}
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aと関連する良く見られている質問

Q「スタート」「すべてのプログラム」の・・

PC初心者です。
教えてください。

「スタート」から「すべてのプログラム」を
選択するとプログラムが表示されますよね?
でもデスクトップにショートカットを作成すれば
すぐ起動できるので、「すべてのプログラム」の
一覧からドラッグしてデスクトップに
貼り付けたら、「全てのプログラム」内に
その項目がなくなってしまいました。
一応、デスクトップのショートカットから
起動できるのですが、「すべてのプログラム」に
もう一度表示させるにはどうすればいいですか?

Aベストアンサー

ドラッグを逆にしてやればいいのです。

デスクトップに置いた、アイコンをドラッグしながらスタートボタンの上まで近づけると、スタートが開きます。
それからプログラムもどうようにドラッグしたまま開き、置きたい場所でマウスを離せば置けます。

QJavaScriptで電卓を作って一応完成はした

のですが、分からないコードがあります。以下のコードです。

~HTML~

<form name="dentaku">
<input type="text" name="line" value="0">
<input type="button" value="C" onclick="cl()">
<input type="button" value=" 7 " onclick="val(7)">
<input type="button" value=" 8 " onclick="val(8)">
<input type="button" value=" 9 " onclick="val(9)">
<input type="button" value="÷" onclick="keisan('/')">
<input type="button" value=" 4 " onclick="val(4)">
<input type="button" value=" 5 " onclick="val(5)">
<input type="button" value=" 6 " onclick="val(6)">
<input type="button" value="×" onclick="keisan('*')">
<input type="button" value=" 1 " onclick="val(1)">
<input type="button" value=" 2 " onclick="val(2)">
<input type="button" value=" 3 " onclick="val(3)">
<input type="button" value="-" onclick="keisan('-')">
<input type="button" value=" 0 " onclick="val(0)">
<input type="button" value=" ・ " onclick="val('.')">
<input type="button" value=" + " onclick="keisan('+')">
<input type="button" value="=" onclick="keisan('=')">
</form>

~JavaScript~

total = 0;
input = "";
ope = "+";
flg = 1;

function val(data) {
flg = 0;
input += data;
document.dentaku.line.value = input;
}

function keisan(data) {
if (flg == 0) {
flg = 1;
cf = total + ope + input;
total = eval(cf);
input = "";
document.dentaku.line.value = total;
}
if (data == "=") {
total = 0;
ope = "+";
} else {
ope = data;
}
}

function cl() {
total = 0;
ope = "+";
input = "";
document.dentaku.line.value = total;
}

関係のないコードは省略してあります。また、CSSも省略しますが、テーブル要素を使わず以下の画像のようにインライン要素(input要素)の性質を利用して回り込みをさせています。


長くなりましたが、そこで質問なのですが、

(1)変数ope(operandの略)なのですが、初期値は+なのに演算子ボタン(上記のHTMLコード)をクリックすると、なぜ値がその演算子に変わるのか理由を教えて下さい。

何となく理由は分かりますが、はっきりと理解したいです。


(2)上記のHTMLコードをもっと簡単に書けませんか?

特にonclickをボタンの数だけ書くのは手間です。

のですが、分からないコードがあります。以下のコードです。

~HTML~

<form name="dentaku">
<input type="text" name="line" value="0">
<input type="button" value="C" onclick="cl()">
<input type="button" value=" 7 " onclick="val(7)">
<input type="button" value=" 8 " onclick="val(8)">
<input type="button" value=" 9 " onclick="val(9)">
<input type="button" value="÷" onclick="keisan('/')">
<input type="button" value=" 4...続きを読む

Aベストアンサー

(1)
keisanが呼ばれて
dataが=以外だったらope = dataになってるから。
dataにはonclickで指定した値が入っている。

(2)いちいちonclickが面倒となると、こんな感じかな。
ただhtmlに書くものは増える
<input type="text" name="line" value="0">
<button type="button" value="C">C</button>
<button type="button" value="7"> 7 </button>
<button type="button" value="8"> 8 </button>
<button type="button" value="9"> 9 </button>
<button type="button" value="/">÷</button>
<button type="button" value="4"> 4 </button>
<button type="button" value="5"> 5 </button>
<button type="button" value="6"> 6 </button>
<button type="button" value="*">×</button>
<button type="button" value="1"> 1 </button>
<button type="button" value="2"> 2 </button>
<button type="button" value="3"> 3 </button>
<button type="button" value="-">-</button>
<button type="button" value="0"> 0 </button>
<button type="button" value="."> ・ </button>
<button type="button" value="+"> + </button>
<button type="button" value="=">=</button>

<script>
var total = 0;
var input = "";
var ope = "+";
var flg = 1;
document.addEventListener('DOMContentLoaded', function(){
var elems = document.querySelectorAll('button');
for (var i = 0; i < elems.length; i ++) {
elems[i].addEventListener('click', function(){
var value = this.value;
if (value.match(/[0-9]+/)) {
flg = 0;
input += this.value;
document.dentaku.line.value = input;
} else if (value === 'C') {
total = 0;
ope = "+";
input = "";
document.dentaku.line.value = total;
} else {
if (flg == 0) {
flg = 1;
cf = total + ope + input;
total = eval(cf);
input = "";
document.dentaku.line.value = total;
}
if (value == "=") {
total = 0;
ope = "+";
} else {
ope = value;
}
}
}, false);
}
}, false);
</script>

(1)
keisanが呼ばれて
dataが=以外だったらope = dataになってるから。
dataにはonclickで指定した値が入っている。

(2)いちいちonclickが面倒となると、こんな感じかな。
ただhtmlに書くものは増える
<input type="text" name="line" value="0">
<button type="button" value="C">C</button>
<button type="button" value="7"> 7 </button>
<button type="button" value="8"> 8 </button>
<button type="button" value="9"> 9 </button>
<button type="button" value="/">÷</button>
<button type="button" ...続きを読む

Qスタートメニューのすべてのプログラムについて

スタートメニューのすべてのプログラムなのですが、表示がおかしくなりました。
なぜかすべてのプログラムを表示すると、画面の下の方の見えないところにまで表示されるようになってしまいました。
そこで、この画面を上にずらして見えるようにしたいのですがどうすればいいでしょうか?

Aベストアンサー

スタートメニューを右クリック→プロパティを開く
         ↓
タスクバーと[スタート]メニューのプロパティが開いたことを確認
         ↓
[スタート]メニューのタブを開く→下部にある項目で
カスタマイズというボタンがありますそのボタンを押します
         ↓
押せないボタンが一つありますがとりあえず気にしないでください。
         ↓
次に[スタート]メニューのカスタマイズというウィンドウが開きます
         ↓
その中に[スタート]メニュー項目というところがありその中に
”プログラムをスクロールする”というチェックボックスがある
         ↓
そのチェックをはずす

これですべてのプログラムが一度に表示されるはずです。

QJavaで簡単なアニメーションを作りたい

Javaで簡単なアニメーションを作りたいと思っています。
具体的にはバネの単身動や、サインカーブを描きたいと思います。

Javaの基本的なことについては少しは知っています。

このような勉強がホームページ等がありましたら教えてください。

お願いします。

Aベストアンサー

ここでいう「アニメーション」というのは、画像ファイルをあらかじめ用意して、それを順番に表示させる(いわゆるパラパラ漫画)ではないですよね。
たとえばサインカーブだったら、プログラムで座標計算して、少しずつサインカーブを描画するようなイメージでしょうか。
でしたら、下記アドレスの「Science」などは参考としてはいかがでしょうか。

参考URL:http://www.horae.dti.ne.jp/~yoji/TamaJava/resource/

Qスタートボタン→すべてのプログラムからMicrosoft Officeが出ない

OSはvistaです
スタートボタン→すべてのプログラムからMicrosoft Officeが出ません
右クリック→All Usersで見ても出ません。
C:\Program Filesにはあるのですが不便でなりません。
スタートボタン→すべてのプログラムから出せるようにするには
どうすればよいでしょうか?

Aベストアンサー

Cドライブを開いて、「Program Files」→「Microsoft Office」→「Office」と追ってください。ここに「EXCEL.EXE」というファイルがあります。エクセルの本体です。
これを、右クリック→送る で、「デスクトップ(ショートカットを作成)」をクリックしてください。これでデスクトップにショートカットアイコンができました。右クリック→名前の変更 で、名前を単に「EXCEL」あるいは「エクセル」と直したほうが分かりいいでしょう。
次に、スタートをクリックし、「プログラム」を右クリックで、「開く-All Users」(OSがWindows XPの場合)をクリックして開いてください。そこに、デスクトップのアイコンを右ボタンでドラッグ、「ここにコピー」してください。
これで、デスクトップとスタートメニューにエクセルのアイコンが再生します。

参考URL:http://oshiete1.goo.ne.jp/qa759977.html

Q教えていただけないでしょうか

下のような画像のホームページを作りたいのですがうまくいきません
誰かソースを教えていただけませんか、画像の入れ方もわかりません
よろしくお願いします
   作りたいホームページhttp://www.vill.nozawaonsen.nagano.jp/top.htm

Aベストアンサー

#3です。 おそらくこのJAVAアプレットなのではないでしょうか。
詳細は、参考URLを開いてみてください。
JAVAアプレットファイルもありますし、設置方法についても解説されています。

参考URL:http://www.yo.rim.or.jp/~nakagawa/WWW/Jcam/Jcam.html

Qスタートメニューの「すべてのプログラム」が開かない

スタートメニューの「すべてのプログラム」が開かないんですが
解決法分かる方いましたら教えてください。

Aベストアンサー

No.3 です
 まだ解決しませんか。 「すべてのプログラム」 を左クリックしても駄目ですか。

「スタート」 → 「マイコンピュータ」 → 「Windows XP」 → 「Documents and Setting」 → [All Users] → [スタートメニュー] → 「プログラム」 
と順に開いて下さい。 そこにアイコンが有りますか。 有れば念の為、そのアイコンの上で左クリック (以下クリック) したまま 「スタート」 の上、現れた 「すべてのプログラム」 の上、出てきた枠の中で離して下さい。
もし無いのなら試しにディスクトップのアイコンを、右クリック 「コピー」 して此処へ右クリックで 「貼り付け」 て下さい。 これで 「すべてのプログラム」 は開きませんか。

これで駄目なら 本当に 「すべてのプログラム」釦 が有るのですか。
「スタート」 右クリック 「プロバティ」 「スタートメニュー」 クリックで出てきた画面 (「スタート」メニューのプロバティ ・NO・3でお願いした処) の 「スタート」メニュー の方に(・)入ってますか。 無ければ入れて、「適用」「OK」 をクリックして下さい。 (No.3の 「クラシック」)

それでも駄目なら 「開いていた」 日以前のポイントで、「システムの復元」 を行ってください。 後はリカバリーですね。

一応 「復元」 までは書いておきます。 「スタート」 「ヘルプとサポート」 をクリックし、出てきた画面の検索枠に 「システムの復元」 と入れ 「→」 を押します。 現れた画面・左枠の [システム復元ウィザードを実行する] を選びクリックすると、「システムの復元」 が起動します。 指示に従って、arisakoさんの選ばれたポイントを復元してください。 中に 「ヘルプ」 も有ります。
リカバリーの方法も、この 「ヘルプとサポート」 に載っています。 頑張って下さい。 案外もう開いてたのかな。 

No.3 です
 まだ解決しませんか。 「すべてのプログラム」 を左クリックしても駄目ですか。

「スタート」 → 「マイコンピュータ」 → 「Windows XP」 → 「Documents and Setting」 → [All Users] → [スタートメニュー] → 「プログラム」 
と順に開いて下さい。 そこにアイコンが有りますか。 有れば念の為、そのアイコンの上で左クリック (以下クリック) したまま 「スタート」 の上、現れた 「すべてのプログラム」 の上、出てきた枠の中で離して下さい。
もし無いのなら試...続きを読む

Q芸術的(?)とも思えるコードを教えていただけますか?

いつも参考にさせて頂いております。有難うございます。
さて、万人にわかりやすくコードを書くのもよいのですが、
これぞ便利でしかもコードが短くなるようなテクニックを
教えていただけますか?
またそのようなサイトがあれば、それもお願いします。

お礼のポイントも甲乙つけがたくなると大変なので
差し上げないかもしれません。わがままなお願いですが
よろしくお願いします。

Aベストアンサー

そんなあなたに「ハッカーのたのしみ」という書籍。
たとえば、asciiの0~9、a~fを入力し、対応する16進数を返す式。
x > 97 ? x - 87 : x - 48
とでも書けばわかりやすいものを、
x % 87 % 48
と書くようなノリで、いろいろな超絶コードが紹介されています。

http://www.amazon.co.jp/dp/4434046683

また、IOCCCもある意味芸術的です。

http://ja.wikipedia.org/wiki/IOCCC

以下はそのエントリの一例です。

http://www.ioccc.org/2001/williams.c

Qスタート→すべてのプログラム=幅が広すぎて使いにくい!

スタートボタンから、すべてのプログラムにポインタを合わせると、プログラムが表示されますが、それが画面いっぱいに表示されて、特に右側のものはプログラム名が隠れてしまい、使い勝手が非常に悪いです。何か良い方法はありませんか?例えば一列の幅を狭くすることはできないのでしょうか?

Aベストアンサー

メニューに登録されているモノのファイル名に極端に長いモノがありませんか、
そいつのファイル名を縮めてやれば列の幅は小さくなるかと。

QJavaの細かい仕様を教えていただけませんか?

ずっと前にちょろっと触ってJavaは一端離れていましたが
仕様を細かく確認してみたくなったので、駆け足で先ほどまた触れてみました。

なお、それぞれ触れた時間はだいぶ違いますが、プログラミング言語に関してはC、C++、C++/CLI、C#、HLSL、PHPは経験があります。(アセンブリはほんの少しだけ読める程度)

なのでそれら(とくにC++)との比較を教えていただけると早く理解が出来そうで
また、かなり多くの質問があります(だいたいは基本的なことでしょう)が、全部でなくとも、一部でもいいので教えていただけると助かります。

ためしに以下のようなコードを書いてみました。

class MySamplePrint {

private static interface PrintIF {
void Print(); //(1)
}

private static final class MyClass1<T> implements PrintIF {

private final class Nest1{ private int num = 0;}
private final Nest1 n = new Nest1(); //(2)、(3)
private final T data;

MyClass1( T data_, int num_ ){ //(4)
data = data_;
n.num = num_;
}


MyClass1( final T data_ ){ data = data_; } //(5)
//MyClass1(){ this((T)0); } //(6)、(7)

//(8)
public void Print(){
System.out.println(data);
System.out.println(n.num);
}
}

public static void main(String[] arg){

PrintIF a = new MyClass1<Integer>(123); //(9)
a.Print();

final MyClass1 b = new MyClass1("abc"); //(10)
a = b;
a.Print();

a = new MyClass1<String>("def",234);
a.Print();

int i = 0;
{
//int i; //(11)
int x = 0;
}
int x = 1;

//(12)
final PrintIF c = new MyClass1<String>("def",234);
c.Print();

}

}


結果
123
0
abc
0
def
234
def
234



(1) C++ でいうconstメンバ関数はJavaにもないですか?(可能であればvoid Print() const;のようなものを書きたい)

(2)コンストラクタと、このようにメンバの宣言場所でついでに 「型 変数 = 何々;」については、どっちが先かとか明確な順番は規格上定義されているのでしょうか?

(3)メンバ変数にも、このようにfinalを付け、コンストラクタ(か 「型 変数 = 何々;」)で一度だけ値を代入する、といったことが、試したら出来ましたが、これは仕様上普通に可能って事になっていますか?

(4)C++でいう、int num_ = 0など、書かなかった場合それになる、というデフォルト引数というものは、Javaにもないんでしょうか?(つまり、呼び出し側で同じような書き方をしたければこのようにオーバーロードを使う?)

(5)ローカル変数同様、引数にも普通にfinalを指定可能…?

(6)C#ではC++の初期化子リストっぽく MyClass1() : this(何々){ } とか言う書き方になるかと思いますが、Javaでは専ら{}内にのみ記述(this(何々)だったら一行目)でしょうか?

(7)この行はコメントアウトすると
「int から T へキャストすることはできません」
とエラーになります。
んでも(T)""にすると一応通ります。
String型などと整数の0(nullを意図してほしい)は互換性がないのでしょうか

(8)C++やC#のoverrideのようにオーバーライドを明示的に示す方法(や、C#のnewに匹敵するものとか)はありませんか?


(9)<int>はできませんでした。ジェネリックスに指定できる型にはどういう制限があるのでしょうか?

(10)警告は出ましたが、<String>を省略しても通ってしまいました。これは興味本位で、実際は警告も出るので指定はすると思いますが、これは仕様ですか?

(11)この場合、xは可ですがiはダメでした。つまり、CやC++と違い、スコープがより狭い範囲に変わっても「それまでに、より広いスコープで宣言されていた名前」とかぶる変数名の変数は宣言できない、ということでしょうか?

(12)C++的には、このcは参照(というよりポインタに近い)と考えて、この場合finalはc自体の変更を阻止していますが、参照先の内容は変更可能に思います。
CやC++的には
const PrintIF* c = ~
ではなく
PrintIF* const c = ~
と同じ意味

出来れば
const PrintIF* c = ~

const PrintIF* const c = ~

といったことも可能だといいのですが、Javaでは仕様上、それは無理、でしょうか?




その他、コード以外で

(13)アクセス修飾子の指定を書かないと、Javaでは同一パッケージ内で参照可能、ということですが、この「パッケージ内」というのは、これはC#でいうinternalのような意味あいになる、ということでしょうか?

(14)Javaでは非staticなメソッドは全て、C++でいうvirtualに自動的になる、ということでしょうか?(逆に言うと明示的な、virtualに相当する修飾子がない?)

(15)Eclipseで
タブが>
改行が曲がった矢印
で、全部の行に表示されるのですが

テキストの色や背景色(白)の変更や、これらを非表示にする
といったことは可能ですか?

ずっと前にちょろっと触ってJavaは一端離れていましたが
仕様を細かく確認してみたくなったので、駆け足で先ほどまた触れてみました。

なお、それぞれ触れた時間はだいぶ違いますが、プログラミング言語に関してはC、C++、C++/CLI、C#、HLSL、PHPは経験があります。(アセンブリはほんの少しだけ読める程度)

なのでそれら(とくにC++)との比較を教えていただけると早く理解が出来そうで
また、かなり多くの質問があります(だいたいは基本的なことでしょう)が、全部でなくとも、一部でもいいので教えていただけ...続きを読む

Aベストアンサー

C# は使っていないので簡単なところだけ:
(1) ないです.
(2) あたりまえだけど「初期化子→コンストラクタ」の順.
(3) できます.
(4) ないです. オーバーロードしてください.
(5) できます.
(6) {...} に書いてください.
(7) あるわけがないです.
(8) ありません.
(9) Object を基底に持たないとダメ.
(10) ジェネリックス導入以前との互換性のための仕様.
(11) そういうことです.
(12) 無理.
飛んで (14) そう (virtual でないインスタンスメソッドは作れない).

と, Java SE 7 の言語仕様も参照しながら書いてみる.


人気Q&Aランキング

おすすめ情報