0

だから、開いたときに音楽を再生し始めるために作っているゲームを手に入れたいと思っています。私はこれまでこのようなことをしたことがないので、いくつかのアドバイスを考えていました。私は初心者を考慮して、オンラインで理解できるものを見つけることができなかったので、これを実行してそれをかなりうまく説明できれば、それは素晴らしいことです。ありがとう!ああ、私はあなたがプログラムに必要な情報を投稿することができます。

メインクラスは次のようになります。

package com.game.main.window;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import java.awt.event.ActionListener;

public abstract class Main extends JFrame implements ActionListener {

public static JFrame frame = new JFrame();

public static void main(String[] args) {
    createWindow();
}

public static void createWindow() {
    ImagePanel panel = new ImagePanel(
            new ImageIcon(
                    "C:\\Users\\Austin\\Pictures\\My Pictures\\Le Parkour\\ABC0001.jpg")
                    .getImage());

    frame.getContentPane().add(panel);
    frame.setJMenuBar(MenuBar.menuBarCreator());
    frame.pack();
    frame.setTitle("*Game Title* Beta 0.0.1 ADMINISTRATOR VERSION");
    frame.setSize(ImagePanel.img.getWidth(null),
            ImagePanel.img.getHeight(null));
    frame.setLocation(100, 100);
    frame.setVisible(true);
    frame.setResizable(false);
    frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
4

5 に答える 5

3

Javaの同時実行性、特にSwingの同時実行性を調査してみてください。バックグラウンドスレッドで音楽を実行できますが、アプリケーションを終了するときに停止することを忘れないでください。

于 2012-04-23T22:18:04.023 に答える
2

JavaSound情報の「コードの再生Clip」を参照してください。ページ。

次のようなものを使用して、ゲームJarに埋め込まれたサウンドへのURLを取得します。

URL urlToExplosion = this.getClass().getResource("/path/to/boom.wav ");

編集1

frame.setSize(ImagePanel.img.getWidth(null),
        ImagePanel.img.getHeight(null));

悪い、悪い、悪い。フレームの装飾は考慮されていません。 画像のサイズと同じにImagePanel設定する必要があります。preferredSize()おそらく、ImageObserverであるため、画像の幅x高さを取得するときthisに代わりに使用できます。nullその後、画像パネルをフレームに追加して呼び出します。

// set the frame to the smallest size needed to display the content
frame.pack();
于 2012-04-23T22:46:35.277 に答える
0

音楽やそのようなメディアを再生するには、 Java Media Frameworkを調べる必要がありますが、MP3の機能についてはよくわかりませんが、試したことがないので、他にもオープンソースの選択肢があると思いますが、これでうまくいくはずです。

ここからダウンロードして、ここでドキュメントを確認できます。リンクが時間を無駄にしてしまう場合に備えて、現在サポートされているフォーマットのリストを次に示します。

于 2012-04-23T22:56:48.793 に答える
0

最も単純な解決策は次のようになります。

public void playSound(final String file) {
    new Thread(new Runnable() {

        @Override
        public void run() {
            Applet.newAudioClip(getClass().getResource(file)).play();
        }
    }).start();
}

クラスの横または別のパッケージにwavファイルを配置し、getResourceメソッドを変更して、次を呼び出します。

playSound("filename.wav");
于 2012-04-23T22:58:49.153 に答える
0

これを見てください。
上記のように、これを別のスレッドで実行し、終了時に曲を停止するようにしてください。
また、ヒント:

ImagePanel panel = new ImagePanel(
        new ImageIcon(
                "C:\\Users\\Austin\\Pictures\\My Pictures\\Le Parkour\\ABC0001.jpg")
                .getImage());

あなたはこれをすべきではありません。アプリケーションを配布している場合、パスは見つからず、画像アイコンは表示されません。リソースを含むフォルダーを作成してから、次のようにそのパスを使用する必要があります。

ImagePanel panel = new ImagePanel(
    new ImageIcon("./resources/ABC0001.jpg").getImage());

アプリケーションが画像を探す場所を認識できるようにします。

于 2012-04-24T00:04:34.590 に答える