• 締切済み

「至急」 教えてください。メモ帳で作成していただけませんか?

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

  • Java
  • 回答数3
  • ありがとう数2

みんなの回答

  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.3

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

  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.2

当方で動かしてみたところ、画像も出ましたし音も鳴りました。 そちらでなぜできないのかはいくつか可能性が考えられます。 (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文は不必要です。

satoko30
質問者

お礼

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

satoko30
質問者

補足

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を開いて動作確認できる状態になりたいのですが・・・・再確認してもらってよろしいですか?貴重な時間本当にすいません。

  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.1

前の質問が連続投稿のため削除されたのですね。 回答したのですが残念でした。 いちおう、同じ内容をもう一度書きます。 ---- 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()の中で描画に使っているため、 それを変更すれば、描画位置も変更されるはずです。 なお、ここの運営方針で、 連続した質問は削除されます。 これも削除されると思いますが、その前に見てもらえるでしょうか…。

satoko30
質問者

お礼

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

satoko30
質問者

補足

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 } に追加をお願いします。本当にお忙しいところすいません。わからないと眠れなくなります。

関連するQ&A

  • SwingのアプリケーションでのpaintComponentによる処理について

    javaを学習している者です。 「マウスがクリックされたところを赤い四角を描画して、その前にクリックされて描画されていた赤い四角は同時に消える」という処理を実装したいのですが、うまくできず、赤い四角が残ってしまいます。 プログラムはpaintComponent(Graphics g)の中で、クリックされた場所で赤い四角を描画する処理だけ実装していて、マウスがクリックされるたび、mouseClicked(MouseEvent e)の中でrepaint()を呼ぶ、という風に書いているのですが、どう変えればうまくいくでしょうか? 前に勉強していたアプレットではこのような感じで出来たと思うのですが・・・。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 勝手にアプレットが停止します

    アプレットが動作不良となる時があます。 アプレットの定周期(1秒、2秒など)の 更新描画にて、repaint()メソッドを呼び出していますが、 Javaからupdate()メソッドが呼び出されず、画面の 描画処理が行われていない状態となっていようです。 調べたところ、アプレットのrepaint()メソッド を呼び出すと、Javaからupdate()メソッドが 実行され、paint()メソッドに記述している 各描画処理が行われるはずですが、下記のように 実行されていないようです。 非常に困っていますので、どなたかご教授お願いします。    repaint()     ↓    update()  ←なぜかJavaから実行要求が来ない     ↓    paint()

    • ベストアンサー
    • Java
  • Eclipse (3.5)で.classファイルの作成をするには?

    Eclipse (3.5)で.classファイルの作成をするには? ホームページビルダーにJavaアプレットを挿入する機能があるのですが、 ファイル形式が.classでないといけないようです。 eclipseで作成されたファイルは、.javaしか見当たらないのですが、 .classファイルを作成するにはどうしたらいいのでしょうか?

    • ベストアンサー
    • Java
  • アプレットでマウスイベントが出ない

    クリックしても反応しません。 また、マウスイベントが発生したときに飛ぶメソッドにSystem.out.printlnを入れるとException in thread "AWT-EventQueue-0" java.lang.NullPointerException: component argument pDataが出ることがあります。 import java.applet.Applet; import java.awt.Graphics; import java.awt.event.MouseListener; import java.awt.event.MouseEvent; public class NewJApplet extends javax.swing.JApplet implements MouseListener{ int x = 10; int y = 10; public void init() { x = 50; y = 50; } public void mouseClicked(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mousePressed( MouseEvent e ){ x = e.getX(); // マウスがクリックされた位置のx座標を取得する y = e.getY(); // マウスがクリックされた位置のy座標を取得する repaint(); // アプレットの再描画を指示する } public void mouseReleased(MouseEvent e) { } public void paint(Graphics g) { g.fillOval(x,y,10,10); } } 使ってるのは jre1.6.0_01 NetBeans 5.5です

    • ベストアンサー
    • Java
  • プログラミングの問題が分かりません。

    javaのプログラミングで分からない問題があり困っています。 お分かりになる方がいましたら教えてくださると助かります。 ↓問題です マウスイベントを利用した以下のアプレットを作れ. ▽アプレット領域は400×400 ▽マウスがアプレット領域に入ってきたら(MouseEntered),メッセージを表示 「こんにちは,宝探しするよ.好きな場所をクリックしてね」 ▽マウスがクリックされたら(MouseClicked),イベント処理  宝の場所(50×50)を適当に設置  その場所をクリックしたら,あたりでメッセージと宝箱を表示 「あたり! 宝を見つけたよ」&「宝箱の絵」  それ以外の場所をクリックしたら,はずれでメッセージを表示 「はずれ!」 ▽マウスがアプレット領域を出たら(MouseExited),メッセージを表示 「さよなら.また来てね」 よろしくお願いします。

  • JavaAppletのプログラム添削をお願いします

    初心者です。宜しくお願いします。 JAVA Appletで、クリックするたびに画像が変わるものを作りたいのですが、上手くいきません。 プログラムの添削をお願い致します。 JAVA Appletを利用し、画面をクリックするたびに画像が変わるアプリを作りたいのですが、上手くいきません。 ※コンパイルは通るのですが、実行しても何も表示されません。 [参考URL]http://www.geocities.jp/supermisosan/javastudy/mousechange.html この、画像を変えただけのものを作れればOKです。 以下、今私の書いたプログラム内容です。 書いたと言っても、コピペして部分部分を変えただけですが‥。 【click.java】 import java.applet.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class click extends JApplet implements MouseListener { Image siro,kiiro,aka2,img; int x=0; Image image[]=new Image[5]; Graphics g; public void init() { addMouseListener(this); image[0]=getImage(getDocumentBase(),getParameter("siro.gif")); image[1]=getImage(getDocumentBase(),getParameter("kiiro.gif")); image[2]=getImage(getDocumentBase(),getParameter("aka2.gif")); image[3]=getImage(getDocumentBase(),getParameter("aka2.gif")); image[4]=getImage(getDocumentBase(),getParameter("aka2.gif")); setBackground(Color.white); } public void paint(Graphics g) { g.drawImage(image[x],0,0,this); } public void mouseClicked(MouseEvent me) { x++; if(x==5) x=0; repaint(); } public void mouseEntered(MouseEvent me) { } public void mouseExited(MouseEvent me) { } public void mousePressed(MouseEvent me) { } public void mouseReleased(MouseEvent me) { } } 【click.html】 <html> <head> <title>test applet</title> </head> <body> <applet code="click.class" width=500 height=500> </applet> <hr> <a href="click.java"> source file </a> </body> </html> 何が足りないのでしょうか? 勉強不足ですみません、宜しくお願い致します!!

  • javaのイベント処理についての質問

    今、以下の課題に取り組んでいるのですが、「新しくクリックした座標点で円を描くだけでなく、 以前にクリックした座標点での円も全て表示するように」というところのプログラミング方法がわかりません。 現在のソースは実行してもクリックしたところに円が表示されるようにできたのですが、別の場所をクリックすると以前の円は消えてしまいます。 どなたか詳しい方教えていただけませんでしょうか。 問題文↓ 図のように、マウスクリックした位置に円を描くアプレットを作成せよ。円の数は最大10個までとする。なおマウスクリックした位置は、 public void mouseClicked(MouseEvent e) とすると e.getX(); e.getY(); というメソッドでint型のx,y座標点として得られる。 クリックした座標点を記憶しておくために、点の位置は、xp[i]、yp[i]のように配列を使用し、新しくクリックした座標点で円を描くだけでなく、 以前にクリックした座標点での円も全て表示するように、プログラムを作成すること。 なお、メソッドmouseClicked(MouseEvent e)とメソッドpaint(Graphics g)に共通して座標点を扱うために座標点はグローバル宣言を必要とする。 ソース import java.awt.*; import java.awt.event.*; import java.applet.Applet; public class Marble extends Applet { int xp; int yp; public void init(){ MsListener mouseListener=new MsListener(); setBackground(Color.white); addMouseListener(mouseListener); } class MsListener extends MouseAdapter{ public void mouseClicked(MouseEvent e){ xp=e.getX(); yp=e.getY(); repaint(); } } public void paint(Graphics g){ final int MAX=20,WIDTH=200,HEIGHT=200; g.draw3DRect(0,0,WIDTH-2,HEIGHT-2,false); g.setColor(Color.blue); g.fillOval(xp-5,yp-5,10,10); } } どうかよろしくお願いします。

  • アプレットで再描画をする時ちらつく

    Javaアプレットで題名の通り再描画をするときにちらつきます。 ソースコードは大まかに表すとこのような感じです。 /*test.java*/ import java.applet.* import java.awt.Image; public class test extends Applet implements Runnable{  int a = b = c = d = e = f = g = h = 0;  Thread th;  Image im;  AudioClip au;  public void init(){   im = getImage(getDocumentBase('image.gif'););   au = getAudioClip(getDocumentBase('test.wav'););   a = c = e = g = 0;   th = new Thread();   th.start();   au.loop();  }  public void run(){   try{    while(true){     repaint();    }   }catch(){例外処理}  }  public void stop(){   au.stop();  }  public void paint(Graphics g){   g.drawImage(im,a,b,c,d,e,f,g,h);  } } ※ test.gif = 6KB test.wav = 400KB ついでに書いておきます。 OS:Me CPU:AMD アスロン 800MHz メモリ:256MB 起動時のリソース残量:77% 上のソースコードはうろ覚えなので、 間違えている箇所があるかもしれませんが、 コンパイルは正常に終了し、起動時エラーもありません。 宜しくお願いします。

    • ベストアンサー
    • Java
  • 【アプレット】マウスイベントについて

    【アプレット】マウスイベントについて 現在、マウスに円をリンクさせています 1回左クリックするとその場所で円が停止し、もう1回左クリックするとまた動きだし、もう1回左クリックするとその場所で円が停止し、・・・の繰り返しを行いたいです なにかアドバイスをください。 作ってるのに近いプログラム ↓ import java.applet.* ; import java.awt.*; import java.awt.event.*; public class test extends Applet { int posX = 50; int posY = 50; public void paint(Graphics g) { g.setColor(Color.red); g.fillOval(posX, posY, 50, 50); } public void mousePressed( MouseEvent e ){ x = e.getX(); y = e.getY(); repaint(); } public void init () { this.setSize(200, 200); this.setVisible(true); addMouseMotionListener(new MouseMotionAdapter() { public void mouseMoved(MouseEvent e) { posX = e.getX(); posY = e.getY(); repaint(); } public void mousePressed( MouseEvent e ){ x = e.getX(); y = e.getY(); repaint(); } public void mouseReleased(MouseEvent e){ } public void mouseClicked(MouseEvent e){ } public void mouseEntered(MouseEvent e){ } public void mouseExited(MouseEvent e){ } }); } }

  • Javaアプレットについての質問です

    Javaアプレット関係の質問です。 Eclipseで「Sample_01.java」ファイルを作成します。→ コマンドプロンプトでコンパイルします。→ 作成した「Sample_01.class」ファイルをデスクトップに移動します→ HTMLファイルを開きます。 …この手順だと問題なくアプレットを表示できるのですが、 Eclipseで「Sample_01.java」ファイルを作成します。→ 「保管」します。→ ナビゲータービューから「Sample_01.class」ファイルを取りだします→ デスクトップに移動します。→ HTMLファイルを開きます。 …この手順だとなぜか×マークが表示されエラーになります。 繰り返しになりますが、どちらのファイルも名前・中身は全く同じものとなっています。コンパイルの方法が違うだけです。 なぜEclipseで自動作成された方のclassファイルだけエラー?が出たのでしょうか?エラーが出ない対策とかはありませんかね? Javaアプレットに詳しい方いましたら教えてください。 //一応ソース乗せておきます import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.util.*; public class Sample_01 extends Applet{ private static final long serialVersionUID = 1L; public void init(){ } public void paint(Graphics g){ g.drawRect(200,200,25,30); } }

専門家に質問してみよう