プロが教える店舗&オフィスのセキュリティ対策術

Javaでサウンドとマウス入力を使用したアプレットの作成してデモのソースを教えてください。
例 ImageMove.Javaを作成したいのですが、追加として・マウスでクリックした位置にイメージを動かす・マウスのクリックに対応したイベントはmouseClicked・イメージの再描画はrepaint();・アプレット名は”ImageMove.Class”でImagemove.htmlファイルから呼び出されると仮定して作成。手元の環境は以下のファイル(アプレットと同じデェレクトリ)にダウンロードしてあります。
・audioimage.htmlで確認・duke.gif・ringin.wav・rinbout.wavを取り入れます。解かりますか?

A 回答 (3件)

前の質問が連続投稿のため削除されたのですね。


回答したのですが残念でした。
いちおう、同じ内容をもう一度書きます。
----
mouseClickedのところ、

43 public void mouseClicked(MouseEvent e) {
44 int mouseX = e.getX();
45 int mouseY = e.getY();
46
47 if (mouseX >= x && mouseX <= x+imageWidth) {
48 if (mouseY >= y && mouseY <= y+imageHeight) {
49 first.play();
50 }
51 }
//--挿入ここから--
x = mouseX;
y = mouseY;
repaint();
//--挿入ここまで--
52 }

で、できると思います。
コンパイルしていないので自信はなしですが。

x, yというのは、最初の方で宣言したint型の値です。
paint()の中で描画に使っているため、
それを変更すれば、描画位置も変更されるはずです。

なお、ここの運営方針で、
連続した質問は削除されます。
これも削除されると思いますが、その前に見てもらえるでしょうか…。

この回答への補足

1 import java.awt.*;
2 import java.awt.event.*;
3 import java.applet.*;
4
5 public class Mover extends Applet
6 implements MouseListener, MouseMotionListener {
7
8 Image duke;
9 AudioClip first,second;
10 int x,y,imageWidth,imageHeight;
11
12 public void init() {
13 MediaTracker tracker = new MediaTracker(this);
14 duke = getImage(getDocumentBase(),"duke.gif");
15 tracker.addImage(duke,0);
16 try {
17 tracker.waitForID(0);
18 } catch (Exception e) {}
19
20 imageWidth = duke.getWidth(this);
21 imageHeight = duke.getHeight(this);
22 first = getAudioClip(getDocumentBase(),"first.au");
23 second = getAudioClip(getDocumentBase(),"second.au");
24 x = 30;
25 y = 30;
26 addMouseListener(this);
27 addMouseMotionListener(this);
28 }
29
30 public void start() {
31 first.play();
32 }
33
34 public void paint(Graphics g) {
35 g.drawImage(duke,x,y,this);
36 }
37
38 public void mousePressed(MouseEvent e) { }
39 public void mouseReleased(MouseEvent e) { }
40 public void mouseExited(MouseEvent e) { }
41 public void mouseEntered(MouseEvent e) { }
42
43 public void mouseClicked(MouseEvent e) {
44 int mouseX = e.getX();
45 int mouseY = e.getY();
46
47 if (mouseX >= x && mouseX <= x+imageWidth) {
48 if (mouseY >= y && mouseY <= y+imageHeight) {
49 first.play();
50 }
51 }
52  x=mouseX;
53 y=mouseY;
54 repaint();
55 }
56
57 public void mouseDragged(MouseEvent e) { }
58
59 public void mouseMoved(MouseEvent e) {
60 int mouseX = e.getX();
61 int mouseY = e.getY();
62
63 if (mouseX >= x && mouseX <= x+imageWidth) {
64 if (mouseY >= y && mouseY <= y+imageHeight) {
65 second.play();
66 try {
67 Thread.sleep(250);
68 } catch (Exception e1) {}
69 }
70 }
71 }
72 }

に追加をお願いします。本当にお忙しいところすいません。わからないと眠れなくなります。

補足日時:2003/07/27 00:07
    • good
    • 0
この回答へのお礼

有難うございます。
そうなんです。有難うございます。開いたら削除でした。がーん。mouseClickedのところはわかりました。今度はサウンドのところ(ringin.wav ringout.wav) duke.gif(画像)の挿入の仕方が解かりません。何かまとめた参考例ありますか?メモ帳で作成中なのですが・・・音や画像がでません。はてなんで?添付ファイルがおかしいのか?
 本当に何度も有難うございます。

お礼日時:2003/07/27 00:06

>これでImageMove.Javaとソースコードファイルにして、



だから、ImageMove.javaという名前にしちゃ駄目なの。
Javaの場合、「ファイル名はクラス名と同じにする」という制限があるのです。
下のソースコードで書かれているのは、Moverというクラス。
これはMover.javaという名前のファイルにして扱わないといけません。
そうでなければ、
>6 public class Mover extends Applet
の行のMoverをImageMoveにしてください。

なお、「ImageMove.Java」や「ImageMove.Class」のように、
拡張子の.javaや.classの先頭を大文字にしてますが、
ここは小文字を使ってください。
    • good
    • 0

当方で動かしてみたところ、画像も出ましたし音も鳴りました。


そちらでなぜできないのかはいくつか可能性が考えられます。

(1)HTMLファイルに記述しているクラス名と、実際のクラス名が合っていない。
質問文で書いているのは「ImageMove.class」ですが、
このソースコードは「Mover.java」という名前にして
コンパイルした後は「Mover.class」になってないと動きません。
また、これを動かすHTMLファイルは、たとえば以下のようなものです。
------------
<html>
<body>
<applet code=Mover.class width=120 height=120></applet>
</body>
</html>
--------------

(2)音声ファイル名が合っていない。
質問文では「ringin.wav」となっているのに、
ソースでは「first.au」のようになっています。
ソースを直した方がいいでしょう。

(3)ブラウザが対応していない。
私Javaをやっているくせにアプレットには疎いのですが、
一時期、ブラウザによってAPPLETタグを認識しなかったようです。
たとえばNetscapeの最新版(Java実行環境付き)を使えば
そういう問題はなくなるでしょう。

(4)52行に全角空白が混じっているようです。

なお、下記のプログラムでは、
「イメージを移動するときのクリックで、
イメージの内部をクリックしたときだけfirst.auが鳴る」
という仕様になっていますが、これでいいのでしょうか?
そうでないなら、47、48行のif文は不必要です。

この回答への補足

1 import java.awt.*;
2 import java.awt.Graphics;
3 import java.awt.event.*;
4 import java.applet.*;
5
6 public class Mover extends Applet
7 implements MouseListener, MouseMotionListener {
8
9 Image duke;
10 AudioClip sound1,sound2;
11 int x,y,imageWidth,imageHeight;
12
13 public void init() {
14 MediaTracker tracker = new MediaTracker(this);
15 duke = getImage(getDocumentBase(),"duke.gif");
16 tracker.addImage(duke,0);
17 try {
18 tracker.waitForID(0);
19 } catch (Exception e) {}
20
21 imageWidth = duke.getWidth(this);
22 imageHeight = duke.getHeight(this);
23 sound1 = getAudioClip(getDocumentBase(),"sound1/ringin.wav");
24 sound2 = getAudioClip(getDocumentBase(),"sound2/ringout.wav");
25 x = 30;
26 y = 30;
27 addMouseListener(this);
28 addMouseMotionListener(this);
29 }
30
31 public void start() {
32 sound1.play();
33 }
34
35 public void paint(Graphics g) {
36 g.drawImage(duke,mouseX,mouseY,this);
37 }
38
39 public void mousePressed(MouseEvent e) { }
40 public void mouseReleased(MouseEvent e) { }
41 public void mouseExited(MouseEvent e) { }
42 public void mouseEntered(MouseEvent e) { }
43
44 public void mouseClicked(MouseEvent e) {
45 int mouseX = e.getX();
46 int mouseY = e.getY();
47
48 if (mouseX >= x && mouseX <= x+imageWidth) {
49 if (mouseY >= y && mouseY <= y+imageHeight) {
50 public void start() {
51 sound1.loop();
52 }
53 }
54 x=mouseX;
55 y=mouseY;
56 repaint();
57 }
58
59 public void mouseDragged(MouseEvent e) { }
60
61 public void mouseMoved(MouseEvent e) {
62 int mouseX = e.getX();
63 int mouseY = e.getY();
64
65 if (mouseX >= x && mouseX <= x+imageWidth) {
66 if (mouseY >= y && mouseY <= y+imageHeight) {
67 public void start() {
68 sound2.stop();{
69 }
70 try {
71 Thread.sleep(250);
72 } catch (Exception e1) {}
73 }
74 }
75 }
76 }


お忙しいなか有難うございます。訂正しました。これでImageMove.Javaとソースコードファイルにして、音がなり、再描画もできなおかつアプレットビューワかWebブラウザーでもし既存のImagemove.htmlを開いて動作確認できる状態になりたいのですが・・・・再確認してもらってよろしいですか?貴重な時間本当にすいません。

補足日時:2003/07/27 12:29
    • good
    • 0
この回答へのお礼

本当に大切な時間を有難うございます。訂正箇所を補足に記載しましたのでまた見ていただいてよろしいでしょうか?
Javaは奥が深くどっぷりつかりそうです。かなり多くの質問をしますので今後ともよろしくご指導をお願いします。

お礼日時:2003/07/27 12:44

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