因此,当我打开它时,我希望得到一个开始播放音乐的游戏。我之前从未做过这样的事情,所以我想知道一些建议。考虑到我是一个菜鸟,我无法在网上找到任何可理解的东西,所以如果你能做到这一点并且解释得非常好,这将是惊人的。谢谢!哦,我可以在程序上发布您需要的任何信息。
主要类看起来像:
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);
}
}
答案 0 :(得分:3)
尝试调查java concurrency,特别是concurrency in Swing。您可以在后台线程中运行音乐,但不要忘记在退出应用程序时停止它!
答案 1 :(得分:2)
请参阅JavaSound信息中的Playing a Clip
代码。页。
使用以下内容获取游戏Jar中嵌入声音的URL:
URL urlToExplosion = this.getClass().getResource("/path/to/boom.wav ");
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();
答案 2 :(得分:0)
您应该查看Java Media Framework以播放音乐和此类媒体,不太确定MP3的功能,因为我没有尝试过,我相信有更多的开源替代方案,但这应该诀窍。
您可以下载here并查看文档here。 这是一个list of the formats,它目前支持以防链接最终浪费你的时间
答案 3 :(得分: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");
答案 4 :(得分:0)
看看this 只需确保在单独的线程上运行此操作并在退出时停止播放歌曲,如上所述 另外,只是一个提示:
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());
这样应用程序就会知道在哪里查找图像。